2014-10-29 72 views
6

Tôi có một ứng dụng có một trình đơn tác vụ là split action bar.Cách căn giữa menu hành động trên thanh công cụ

Tôi đã thay đổi actionbar cho thanh công cụ mới và thay thế actionbar chia bởi một thanh công cụ khác được sử dụng trong chế độ độc lập:

Toolbar toolbarBottom = (Toolbar) findViewById(R.id.toolbarBottom); 
toolbarBottom.inflateMenu(R.menu.ab_one_cam); 

Như quy định trong tài liệu trình đơn hành động là pin ở bên phải của thanh công cụ: enter image description here

Nhưng tôi muốn các biểu tượng được tập trung vào thanh công cụ, giống như nó đã được trên chia actionbar: enter image description here

Làm thế nào tôi có thể làm cho menu hành động mất tất cả không gian có sẵn trên thanh công cụ?

Thanh công cụ dành riêng cho trình đơn này, không có gì khác sẽ được thêm vào nó.

trả lời

Câu trả lời được chấp nhận của liên kết dẫn đến một thanh công cụ chia. Nếu như tôi bạn có nhu cầu rất đơn giản mã này là đủ tốt:

public class SplitToolbar extends Toolbar { 

    public SplitToolbar(Context context) { 
     super(context); 
    } 

    public SplitToolbar(Context context, AttributeSet attrs) { 
     super(context, attrs); 
    } 

    public SplitToolbar(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
    } 

    @Override 
    public void addView(View child, ViewGroup.LayoutParams params) { 
     if (child instanceof ActionMenuView) { 
      params.width = LayoutParams.MATCH_PARENT; 
     } 
     super.addView(child, params); 
    } 
} 

tín dụng đi vào: https://gist.github.com/dodgex/7bc81fd2cbb70a8d5117

+0

Kiểm tra cũng: http://stackoverflow.com/questions/34546160/how-to-enable-split-action-bar/34546493#34546493 – piotrek1543

Trả lời

6

Trong trường hợp này, Chris Banes khuyến cáo sử dụng ActionMenuView thay vì thanh công cụ (xem liên kết dưới đây, trả lời # 6). Bên cạnh đó, trong liên kết này, bạn có thể tìm thấy một giải pháp mà các chàng trai subclassed Thanh công cụ để phân chia hoạt động đúng.

https://code.google.com/p/android/issues/detail?id=77632#c2

Hy vọng nó sẽ giúp bạn!

+1

Sử dụng Thanh công cụ chi tiết trong nhận xét của chuỗi đã thực hiện mẹo: https://gist.github.com/dodgex/7bc81fd2cbb70a8d5117 – grunk

1

Tôi cũng đã cố gắng để tìm một câu trả lời cho câu hỏi này trong vài tuần qua. Và điều gần nhất tôi đã tìm thấy lợi dụng thực tế là Toolbar chỉ là một ViewGroup. Tất cả những gì bạn cần làm là tạo bố cục menu_items chỉ là một LinearLayout với số lượng menu items được thêm vào như nhau. Tôi biết đây không phải là một giải pháp lý tưởng nhưng tôi vẫn chưa tìm thấy cách nào để trải ra các mục trong khi sử dụng menu mặc định.

<android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar_btm" 
     android:layout_height="wrap_content" 
     android:layout_width="match_parent" 
     android:minHeight="?attr/actionBarSize" 
     android:background="@color/toolbar_bkgnd" 
     android:layout_alignParentBottom="true" 
     app:theme="@style/ThemeOverlay.AppCompat.ActionBar" > 

     <include layout="@layout/menu_items"/> 

     </android.support.v7.widget.Toolbar> 
+1

Bạn vẫn có thể sử dụng inflateMenu() và setOnMenuItemClickListener() với giải pháp này không? – grunk

+0

Có và không. Nếu bạn đang sử dụng một menu tràn, bạn vẫn có thể sử dụng các phương thức mặc định cho những mục đó cho các mục menu khác, bạn sẽ cần phải thiết lập các layout thông qua XML và tự mình lắng nghe các sự kiện onClick. – MrEngineer13

+0

Không có lý do gì để sử dụng thanh công cụ thì tốt hơn nên tạo chế độ xem tùy chỉnh: ( – grunk

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