2012-01-18 47 views
16

Tôi đang theo dõi một cuốn sách về Phát triển Android để bắt đầu viết ứng dụng thực đầu tiên của mình. Tôi đã đạt đến điểm mà tôi đang thực hiện một menu tùy chọn cho một trong các hoạt động của tôi. Menu xuất hiện, nhưng biểu tượng tương ứng của mục menu từ chối hiển thị. Đây là mã cho menu:Biểu tượng trình đơn tùy chọn Android sẽ không hiển thị

ReminderListActivity

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

res/menu/list_menu.xml

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" > 
    <item android:id="@+id/menu_insert" 
     android:icon="@drawable/menu_add" 
     android:title="@string/menu_insert" /> 

</menu> 

tôi đã sao chép vào biểu tượng ic_menu_add.png (32x32px) từ một trong các thư mục con SDK Android của tôi đến thư mục res/drawable-mdpi của tôi và đổi tên tệp thành menu_add.png. Tôi làm mới thư mục trong nhật thực để biểu tượng hiển thị và bạn có thể thấy tôi đặt nó làm biểu tượng cho mục menu trong tệp bố cục của tôi. Tôi đã thử chạy dự án của tôi trong trình giả lập một vài lần, nhưng biểu tượng không bao giờ xuất hiện. Đối với hồ sơ, tôi đang sử dụng Android 4.0.3 ..

Bất kỳ ý tưởng nào?

+0

Bạn có thể cố gắng để đưa các biểu tượng trong thư mục mật độ ít? Tôi nghĩ rằng nó không có gì để làm với mã của bạn. Có thể nó là một trục trặc trong Eclipse. – iTurki

+0

Chính xác những gì bạn có ý nghĩa của thư mục ít mật độ? Chỉ có các thư mục drawd ldpi, mdpi và hdpi, phải không? Tôi đã thử đặt biểu tượng vào tất cả các thư mục, nhưng điều đó không khắc phục được. – Jort

+1

thêm thư mục và đặt tên là 'có thể vẽ' rồi đặt biểu tượng lên đó. Nếu nó không hoạt động, hãy thử lặp lại biểu tượng trên mỗi thư mục. Đừng quên làm mới dự án và làm sạch nó trước khi bạn kiểm tra. – iTurki

Trả lời

28

Trên Android 3.0+, cách tiếp cận ưa thích cho trình đơn tùy chọn (trình đơn spillover trong thanh tác vụ) sẽ không hiển thị biểu tượng. Nếu bạn có android:targetSdkVersion="11" hoặc cao hơn, các biểu tượng sẽ không bao giờ hiển thị trong các menu trên Android 3.0 trở lên. Các biểu tượng sẽ hiển thị nếu bạn quảng cáo một mục menu tùy chọn là nút trên thanh công cụ và các biểu tượng sẽ hiển thị trên các thiết bị Android 1.x/2.x.

+0

Cảm ơn bạn đã trả lời, tôi đã nghi ngờ rằng nó có liên quan đến cài đặt của Android. Tôi có thể chỉ cần chuyển các mục menu tùy chọn của mình thành các nút trên thanh công cụ hay tôi cần phải chuyển toàn bộ menu tùy chọn của mình thành một thanh công cụ? – Jort

+0

@Jort: Chủ yếu, bạn nên ngừng lo lắng về biểu tượng. Bạn được quyền sử dụng 'android: showAsAction' để di chuyển các mục menu tùy chọn vào thanh hành động dưới dạng các nút trên thanh công cụ. – CommonsWare

+0

Cảm ơn bạn đã làm rõ. Cuốn sách tôi đang theo dõi là tập trung vào việc viết ứng dụng cho Android 2.2, đó là lý do tại sao tôi vẫn kiên trì trong việc cố gắng hiển thị biểu tượng của mình. Tôi chưa sử dụng thanh tác vụ, nhưng bây giờ tôi hiểu giao diện người dùng đã thay đổi như thế nào trong các phiên bản Android mới hơn. Cảm ơn một lần nữa vì lời khuyên hữu ích :) – Jort

0

Ý tưởng hay là bạn đã tạo bố cục với RelativeLayout và khi người dùng đã chọn menu của bạn, bố cục của bạn sẽ được hiển thị.

5

này được hoàn toàn làm việc cho tôi trong API 23

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto" 
xmlns:tools="http://schemas.android.com/tools" 
tools:context=".MainActivity"> 
<item 
    android:icon="@drawable/ic_menu" 
    android:orderInCategory="100" 
    android:title="Option Menu" 
    app:showAsAction="always"> 
    <menu> 
     <item 
      android:id="@+id/action_myorder" 
      android:icon="@drawable/ic_order" 
      android:title="My Order" /> 
     <item 
      android:id="@+id/action_myaccount" 
      android:icon="@drawable/ic_account" 
      android:title="My Account" /> 
     <item 
      android:id="@+id/action_share" 
      android:icon="@drawable/ic_share" 
      android:title="Share" /> 
     <item 
      android:id="@+id/action_term_condition" 
      android:icon="@drawable/ic_terms" 
      android:title="Term and Conditions" /> 
     <item 
      android:id="@+id/action_logout" 
      android:icon="@drawable/ic_logout" 
      android:title="Logout" /> 
    </menu> 
</item> 

+0

tuyệt vời! chỉ muốn biết sử dụng android là gì: orderInCategory = "100" – Abhijit

+0

nếu giá trị cho danh mục là 0 thì menu tràn sẽ xuất hiện trên mảnh đó là vắt, sau đó 0 nó nằm bên dưới đoạn. –

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