2012-06-30 30 views
6

Tôi đang cố gắng chỉnh sửa lại ứng dụng của mình thành giao diện ICS với ABS. Bắt ActionBar chính nó là tốt đẹp và đơn giản, tuy nhiên thêm các mục trình đơn đã không được.Các mục ActionBarSherlock không xuất hiện trong tràn

Mã của tôi trông giống như:

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     super.onCreateOptionsMenu(menu); 
     MenuInflater inflater = getSupportMenuInflater(); 
     inflater.inflate(R.menu.menu, menu); 
     return true; 
    } 

Tất cả các hàng nhập khẩu thích hợp đang được sử dụng.

Và menu.xml của tôi là như sau:

<?xml version="1.0" encoding="utf-8"?> 
<menu 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/backup" android:title="@string/backupLabel"/> 
    <item android:id="@+id/restore" android:title="@string/restoreLabel"/> 
</menu> 

Các chương trình ActionBar, nhưng menu cư xử như một menu 2.1 - chỉ kích hoạt từ nút menu với không tràn sẵn. Điều này cũng đúng trên trình mô phỏng ICS - nơi tôi phải sử dụng nút menu để kích hoạt menu.

Nếu tôi thêm android: showAsAction = "ifRoom" thì các mục xuất hiện dưới dạng mục tác vụ - nhưng không phải trong tràn, đó là nơi tôi muốn chúng luôn như vậy.

Điều đó có hợp lý không?

Tôi đang thiếu gì?

+0

http://stackoverflow.com/questions/9286822/how-to-force-use-of-overflow-menu-on -devices-with-menu-button –

+0

http://stackoverflow.com/questions/8758263/how-to-force-overflow-menu-on-android-actionbar-compat –

+0

Paul đã khắc phục sự cố của bạn bằng liên kết được cung cấp chưa? – Warpzit

Trả lời

0

Có thể bạn đang sử dụng trình giả lập đã bật bàn phím phần cứng chứ không phải phần mềm. Để xem các hành động trong menu mục bổ sung, hãy sử dụng trình mô phỏng với các điều khiển nước ngọt. Các screeenshots cho thấy hai cách để làm điều đó.

  • Sửa một AVD hiện

Edit an existing AVD.

  • Clone một hồ sơ thiết bị hiện

Clone an existing device profile.

1

ForceOverflow đã bị xóa trong ABS 4.1.2 với cảnh tượng người sáng tạo mà bạn không bao giờ nên thực hiện trong đó (xem ghi chú thay đổi). Tôi khá tự tin rằng bạn đang nhìn thấy hành vi mong đợi; bất kỳ thiết bị nào có nút menu chạy ICS + (ví dụ: Nexus S của tôi) không hiển thị menu mục bổ sung vì có khóa phần cứng chuyên dụng - nút 'menu'.

Sử dụng cấu hình trình mô phỏng để xóa nút menu khỏi thiết bị được mô phỏng và Android sẽ biết thêm menu mục bổ sung.

4

chỉ cần sử dụng trình đơn đang boath này đang trên ActionBar:

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:id="@+id/backup" 
     android:showAsAction="ifRoom" 
     android:title="backupLabel"/> 
    <item 
     android:id="@+id/restore" 
     android:showAsAction="ifRoom" 
     android:title="restoreLabel"/> 
</menu> 

hình dáng của nó như:

enter image description here

Bởi vì nếu bạn đang sử dụng

android:showAsAction="ifRoom" : Only place this item in the Action Bar if there is room for it. 

android:showAsAction="Never" : Never place this item in the Action Bar. 

nếu bạn sử dụng như:

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

     <item 
      android:id="@+id/backup" 
      android:showAsAction="ifRoom" 
      android:title="backupLabel"/> 
     <item 
      android:id="@+id/restore" 
      android:title="restoreLabel"/> 
    </menu> 

sau đó hình dáng của nó: một là trên ActionBar & thứ 2 là mở khi bạn bấm nút menu.

enter image description here

Lưu ý: nó làm việc tốt trong < 3,0 hệ điều hành Android do đó, không lo lắng. Nhưng nếu bạn có nhiều mục menu (nhiều hơn thì 3) với android:showAsAction="ifRoom" thì nó hiển thị cho bạn phụ thuộc vào kích thước màn hình thiết bị.

trong Protrait:

enter image description here

trong Cảnh:

enter image description here


Sau Làm tất cả trên i ll saggest bạn sử dụng bên dưới cách < 3,0 os Android:

enter image description here

mã:

<menu xmlns:android="http://schemas.android.com/apk/res/android" > 

    <item 
     android:id="@+id/file" 
     android:showAsAction="ifRoom" 
     android:title="file"> 

     <!-- "file" submenu --> 
     <menu> 
      <item 
       android:id="@+id/create_new" 
       android:title="create_new"/> 
      <item 
       android:id="@+id/open" 
       android:title="open"/> 
     </menu> 
    </item> 

</menu> 
Các vấn đề liên quan