2012-02-17 34 views
20

enter image description hereLàm thế nào để Đặt ActionBar mục trong chính ActionBar và dưới Bar

Ứng dụng Google+ có bố trí nơi nó có mục thanh hành động trong thanh hành động chính và phía dưới. Hiện tại tôi đang sử dụng android:uiOptions="splitActionBarWhenNarrow" để đặt các mục vào thanh dưới cùng. Làm thế nào tôi có thể đặt các mục trên cả hai đầu và cuối?

+0

vâng làm thế nào để hiển thị biểu tượng tràn ở đầu ??? – samirprogrammer

Trả lời

0

Thanh dưới cùng được lấp đầy khi bạn có nhiều mục hơn số có thể được hiển thị trong thanh trên cùng.

Thay vì hiển thị "tràn" ba chấm, các mục sẽ được đặt ở thanh dưới cùng. Hãy nhớ sử dụng:

android:showAsAction="ifRoom|withText" 

trên các mục menu của bạn trong XML.

đọc thêm ở đây: http://developer.android.com/guide/topics/ui/actionbar.html#SplitBar

+0

Điều đó có vẻ không đúng. Trong ví dụ trên Google+, họ cũng có biểu tượng mục bổ sung ở trên cùng. – PolandSpring

+1

@kkshin Đó là chế độ xem tùy chỉnh chứ không phải thanh tác vụ chia tách mặc định. – doorstuck

+0

Tôi đã thử điều này nhưng nó chỉ đi vào thanh hành động phía dưới. – Timmmm

11

Tôi không nghĩ rằng có thể sử dụng ActionBar chuẩn. Khi bật ActionBar tách, TẤT CẢ các hành động sẽ xuất hiện ở dưới cùng trên màn hình hẹp.

Thanh dưới cùng trong hoạt động "tạo bài đăng" của ứng dụng Google+ có vẻ là triển khai tùy chỉnh. Lưu ý rằng báo chí dài để lộ nhãn của một hành động không hoạt động, và thanh dưới cùng vẫn còn ngay cả khi bạn chuyển sang hướng ngang. Mục vị trí là công tắc bật tắt cũng là hành vi ActionBar không chuẩn.

26

Hy vọng câu trả lời của tôi không quá muộn đối với bạn.

  1. Sử dụng android:uiOptions="splitActionBarWhenNarrow" (điều này thêm nội dung vào thanh dưới cùng).
  2. Tạo bố cục mới như mã bên dưới (bố cục này sẽ xử lý tất cả các mục của bạn trên thanh trên cùng).

    <?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:gravity="right" > 
    <Switch 
        android:id="@+id/switch1" 
        android:layout_width="wrap_content" 
        android:layout_height="match_parent"/> 
    <ImageButton 
        android:id="@+id/action_starred" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        style="?android:attr/actionButtonStyle" 
        android:src="@android:drawable/ic_menu_compass" 
        android:onClick="FakeMenu"/> 
    </LinearLayout> 
    
  3. Dán này trong hoạt động của bạn

    ActionBar actionBar = getActionBar();    
    actionBar.setCustomView(R.layout.actionbar_top); //load your layout 
    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME|ActionBar.DISPLAY_SHOW_CUSTOM); //show it 
    
  4. Đó là tất cả :)

+0

Bạn đã giúp tôi rất nhiều, cảm ơn! Nhận xét nhỏ cho những người sử dụng ActionBarSherlock lib - bạn có thể nhận được đối tượng thanh hành động của bạn với getSherlock(). GetActionBar(). – lopek

+0

làm cách nào để hiển thị menu luồng trên đầu thay vì dưới cùng ???? – samirprogrammer

2

tôi đã cùng một vấn đề, không có gì mà tôi tìm thấy đã thực sự làm việc, vì tôi đã phải đối phó với thanh hẹp của thanh tác vụ, sau đó trên các thiết bị lớn, các nút được đặt trên đầu thay vì dưới cùng. Vì vậy, tôi cuối cùng đã giải quyết nó bằng cách đặt một "chân" trong bố cục chính:

Bottom ActionBar Example

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_alignParentTop="false" 
     android:layout_above="@+id/footer"> 

     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
      android:orientation="vertical" 
      android:id="@+id/container" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:paddingLeft="@dimen/body_padding_large" 
      android:paddingRight="@dimen/body_padding_large" 
      android:paddingTop="@dimen/body_padding_medium" 
      android:paddingBottom="@dimen/body_padding_medium" 
      android:gravity="top"> 

     </LinearLayout> 

    </ScrollView> 
    <LinearLayout android:id="@+id/footer" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:layout_alignParentBottom="true" 
     style="@android:style/ButtonBar"> 
     <Button android:id="@+id/btn_1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="Button 1" /> 

     <Button android:id="@+id/btn_2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:text="Button 2" /> 
    </LinearLayout> 
</RelativeLayout> 
0
<?xml version="1.0" encoding="utf-8"?> 

< LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:gravity="right" > 

<Switch 
    android:id="@+id/switch1" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent"/> 

<ImageButton 
    android:id="@+id/action_starred" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    style="?android:attr/actionButtonStyle" 
    android:src="@android:drawable/ic_menu_compass" 
    android:onClick="FakeMenu"/> 

</LinearLayout> 









//Then put these lines of code in your java class or activity 

    ActionBar actionBar = getActionBar();    
    actionBar.setCustomView(R.layout.actionbar); //load your layout 
    actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME|ActionBar.DISPLAY_SHOW_USTOM); //show it 

// hy vọng điều này sẽ giúp

+0

Trong trường hợp đó và nếu bạn có quyền, bạn có thể bỏ phiếu cho câu trả lời đó (Nếu không cần bình luận). Tuy nhiên, nếu bạn tìm thấy một cách khác để giải quyết vấn đề, vui lòng chia sẻ. – TocToc

Các vấn đề liên quan