2015-03-27 42 views
5

Tôi có một menu bật lên xuất hiện khi người dùng nhấp vào một hình ảnh. Mã được sử dụng là:Thay đổi màu văn bản của một mục trong PopupMenu

PopupMenu popupMenu = new PopupMenu(mContext, mImageView); 
popupMenu.setOnMenuItemClickListener(MyClass.this); 
popupMenu.inflate(R.menu.menu_my_class_options); 
popupMenu.show(); 

Trình đơn có ba hành động và tôi muốn văn bản trong một trong số đó có màu đỏ (thay vì màu đen).

Điều đó có khả thi không? Tôi đã tìm thấy một số câu trả lời (ví dụ , here) cho thấy làm thế nào để làm điều này với các hoạt động của Tùy chọn Menu, nhưng họ yêu cầu truy cập vào các phương pháp onCreateOptionsMenu ...

Cảm ơn trước.

- EDIT -

Menu file:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 
    <item 
     android:id="@+id/item_edit" 
     app:showAsAction="ifRoom|withText" 
     android:title="@string/action_edit_address" 
     android:visible="true"/> 
    <item 
     android:id="@+id/item_retake_photo" 
     app:showAsAction="ifRoom|withText" 
     android:title="@string/action_retake_photo" 
     android:visible="true"/> 
    <item 
     android:id="@+id/item_delete" 
     app:showAsAction="ifRoom|withText" 
     android:title="@string/action_delete_shipment" 
     android:visible="true"/> 
</menu> 
+0

Bạn có thể cung cấp xml menu_my_class_options không? – NSimon

+0

Đã chỉnh sửa tin nhắn để cung cấp tệp trình đơn xml. –

+0

bạn có đi qua câu trả lời này không? http://stackoverflow.com/a/25731668/4706693 – NSimon

Trả lời

6

Bạn có thể đạt được điều này bằng các bước sau đây.

Trong style.xml của bạn --- thêm các dòng

<style name="style" parent="android:Theme.Holo.Light"> 
    <item name="textAppearanceSmallPopupMenu">@style/myPopupMenuTextAppearanceColor</item> 
    <item name="android:popupMenuStyle">@style/myPopupMenuStyle</item> 

</style> 

Và dưới đây đang

<style name="myPopupMenuStyle" parent="@style/Widget.AppCompat.Light.PopupMenu"> 

</style> 
<style name="myPopupMenuTextAppearanceColor" parent="@style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Small"> 
    <item name="android:textColor">#000000(Your Color Code)</item> 
</style> 

Cập nhật cho menu đơn item màu

Đối với đơn màu menu bạn chỉ cần sử dụng mã bên dưới

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    inflater.inflate(R.menu.your_menu, menu); 

    int positionOfMenuItem = 0; 
// 0 or whatever your item position at which you want to change the color... 
    MenuItem item = menu.getItem(positionOfMenuItem); 
    SpannableString s = new SpannableString("My red MenuItem"); 
    s.setSpan(new ForegroundColorSpan(Color.RED//your color), 0, s.length(), 0); 
    item.setTitle(s); 
} 
+0

Cảm ơn câu trả lời nhanh, Sadiq. Điều đó sẽ không thay đổi màu văn bản của tất cả các mục? Tôi chỉ muốn thay đổi màu sắc của một trong số họ ... –

+0

@FilipeRamos có bạn là đúng. Tôi cũng đã thêm mã theo yêu cầu của bạn trong bản cập nhật. Vui lòng kiểm tra – Sadiq

+0

Vấn đề với cách tiếp cận đó là tôi không sử dụng menu tùy chọn, tôi đang sử dụng menu bật lên (_PopupMenu_ class) và tôi chỉ có quyền truy cập vào phương thức _onMenuItemClick() _ và không truy cập vào bất kỳ _onCreate nào ..._ phương pháp! : -/ –

0

Tôi biết rằng câu trả lời này là muộn, nhưng có lẽ nó sẽ hữu ích cho ai đó. Hãy thử sử dụng điều này

<string name="action_delete_shipment"><font fgcolor='#FF1400'>Delete Shipment</font></string> 
Các vấn đề liên quan