2015-03-27 2 views
5

Ich habe ein Popup-Menü, das angezeigt wird, wenn der Benutzer auf ein Bild klickt. Der verwendete Code ist:Ändern der Textfarbe eines einzelnen Elements in einem PopupMenu

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

Das Menü hat drei Aktionen, und ich möchte, dass der Text in einer von ihnen (statt schwarz) rot gefärbt werden.

Ist das möglich? Ich habe einige Antworten gefunden (zum Beispiel, here), die zeigen, wie das Option-Menü mit der Aktivität zu tun, aber sie erfordern den Zugang zur onCreateOptionsMenu Methode ...

Vielen Dank im Voraus.

- EDIT -

Das Menü Datei:

<?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

Könnten Sie das XML von menu_my_class_options bereitstellen? – NSimon

+0

Die Nachricht wurde bearbeitet, um die Menü-XML-Datei bereitzustellen. –

+0

bist du dann über diese Antwort gekommen? http://StackOverflow.com/a/25731668/4706693 – NSimon

Antwort

6

Sie diese Schritte durch folgende erreichen können.

In Ihrem style.xml --- fügen Sie die Linien

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

</style> 

Und unten Code

<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> 

Update für einzelne Menüpunkt Farbe

Für Farb einzigen Menüpunkt kann einfach den folgenden Code verwenden

@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

Danke für die schnelle Antwort, Sadiq. Würde das nicht die Textfarbe aller Artikel ändern? Ich möchte nur die Farbe von einem von ihnen ändern ... –

+0

@FilipeRamos ja du hast Recht. Ich fügte auch den Code entsprechend Ihrer requirment in der Aktualisierung hinzu. Bitte überprüfen Sie – Sadiq

+0

Das Problem mit diesem Ansatz ist, dass ich nicht das Menü Optionen verwenden, ich benutze ein Popup-Menü (_PopupMenu_ Klasse), und ich habe nur Zugriff auf die Methode _onMenuItemClick() _, und nicht auf _onCreate ..._ Methode! : -/ –

0

Ich weiß, dass diese Antwort verspätet ist, aber vielleicht wird es für jemanden nützlich sein. Versuchen Sie dies zu verwenden