2012-03-27 40 views

Trả lời

2

theo liên kết này mà giải thích làm thế nào để thay đổi menuitem văn bản lập trình.

http://developer.android.com/guide/topics/ui/actionbar.html#Style

Kiểm tra cho android: actionMenuTextColor để xác định một nguồn tài nguyên phong cách cho văn bản.

+8

Có cách nào để thay đổi nó mà không cần xác định một nguồn tài nguyên phong cách? – Fabii

+4

Điều này không trả lời được câu hỏi. – Odys

+0

... nhưng đó là câu trả lời được chấp nhận! –

4

Để thay đổi mà không xác định tài nguyên kiểu, chúng tôi có thể sử dụng SpannableString.

@Override 
public boolean onPrepareOptionsMenu(Menu menu) { 
      //To style first menu item 
    MenuItem menuItem = menu.getItem(0); 
    CharSequence menuTitle = menuItem.getTitle(); 
    SpannableString styledMenuTitle = new SpannableString(menuTitle); 
    styledMenuTitle.setSpan(new ForegroundColorSpan(Color.parseColor("#00FFBB")), 0, menuTitle.length(), 0); 
    menuItem.setTitle(styledMenuTitle); 

    return super.onPrepareOptionsMenu(menu); 
} 

@Override 
public boolean onMenuItemSelected(int featureId, MenuItem item) { 

    Toast.makeText(this, item.getTitle() + " clicked!", Toast.LENGTH_LONG).show(); 
    return true; 
} 

Khi bạn định dạng kiểu văn bản, bạn sẽ nhận được ngoại lệ "Loại mục tải trọng không hợp lệ". Để tránh điều đó, hãy ghi đè lênMenuItemSelected và sử dụng trả về true hoặc false.

tham khảo:

Android: java.lang.IllegalArgumentException: Invalid payload item type

http://vardhan-justlikethat.blogspot.in/2013/02/solution-invalid-payload-item-type.html

+1

Tôi đã thử điều này và nó không có hiệu lực. Nó có hoạt động cho bạn khi được biên dịch và chạy trên Android 4.4 không? – arlomedia

+1

Giải pháp này không hoạt động trên Android 5.0 và 6.0 – Akshay

1

Hãy thử trả lời Firewall_Sudhan nhưng lặp lại các menu con của menu

@Override 
public void onPrepareOptionsMenu(Menu menu) { 
    super.onPrepareOptionsMenu(menu); 
    SubMenu subMenu = menu.getItem(0).getSubMenu(); 
    for (int i = 0; i < subMenu.size(); i++) { 
     MenuItem menuItem = subMenu.getItem(i); 
     CharSequence menuTitle = menuItem.getTitle(); 
     SpannableString styledMenuTitle = new SpannableString(menuTitle); 
     styledMenuTitle.setSpan(new ForegroundColorSpan(Color.BLACK), 0, menuTitle.length(), 0); 
     menuItem.setTitle(styledMenuTitle); 
    } 
} 
+0

Giải pháp này không hoạt động trên Android 5.0 và 6.0 – Akshay

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