2017-08-15 2 views
0

Ich muss den Hintergrund eines Artikels in meiner App ändern und ich habe nichts darüber gefunden. Ich benutze Artikel & Menü für meine Schublade jetzt muss ich Titel Hintergrund ändern. Ich weiß, wenn ich Listview benutze, kann ich es ändern, aber ich möchte jetzt, wenn es einen Weg dafür gibt. DankeÄndern eines Artikels Hintergrund

<item 
 
     android:checkable="false" 
 
     android:title="@string/account"> 
 
     <menu> 
 
      <item 
 
       android:id="@+id/nav_member" 
 
       android:icon="@drawable/ic_person_add_black_24dp" 
 
       android:title="@string/member" /> 
 
      <item 
 
       android:id="@+id/nav_pay" 
 
       android:icon="@drawable/ic_menu_credit_card_black_24dp" 
 
       android:title="@string/pay" /> 
 
      <item 
 
       android:id="@+id/nav_fanclub" 
 
       android:icon="@drawable/ic_menu_fanclub" 
 
       android:title="@string/fanclub" /> 
 
      <item 
 
       android:id="@+id/nav_introduction" 
 
       android:icon="@drawable/ic_menu_introduction" 
 
       android:title="@string/introduction" /> 
 
      <item 
 
       android:id="@+id/nav_cards" 
 
       android:icon="@drawable/ic_menu_cards" 
 
       android:title="@string/cards" /> 
 
      <item 
 
       android:id="@+id/nav_points" 
 
       android:icon="@drawable/ic_menu_points" 
 
       android:title="@string/points" /> 
 
     </menu> 
 
    </item>

Antwort

0

Schublade Menü ist leider nicht so einfach zu gestalten, können Sie es in der klassischen Art und Weise nicht tun können, mich zu einem Mangel an Parametern in seiner ursprünglichen Konzeption.

einige tun Sie genau eine layout.xml als "design_navigation_item.xml"

Namen erstellen haben

dann sollten in diesem Layout können Sie Ihre eigene ItemView erweiterte Klasse hinzufügen NavigationMenuItemView

<?xml version="1.0" encoding="utf-8"?> 
<!-- 
    This layout should not be rename, It is use directly by design NavigationView component. 
--> 
<your.package.MyNavigationMenuItemView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="?attr/listPreferredItemHeightSmall" 
    android:paddingStart="?attr/listPreferredItemPaddingLeft" 
    android:paddingEnd="?attr/listPreferredItemPaddingRight" 
    android:foreground="?attr/selectableItemBackground" 
    android:focusable="true"/> 

In Ihrem MyNavigationView Klasse können Sie dann Methoden überschreiben, wie

public class MyNavigationMenuItemView extends NavigationMenuItemView { 

    private static final float MENU_ITEM_FONT_SIZE_SP = 14.0f; 

    private CheckedTextView mTextView; 

    public MyNavigationMenuItemView(Context context) { 
     this(context, null); 
    } 

    public MyNavigationMenuItemView(Context context, AttributeSet attrs) { 
     this(context, attrs, 0); 
    } 

    public MyNavigationMenuItemView(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
     if (isInEditMode()) { 
      return; 
     } 
     mTextView = (CheckedTextView) findViewById(android.support.design.R.id.design_menu_item_text); 
    } 

    @Override 
    public void initialize(MenuItemImpl itemData, int menuType) { 
     super(itemData, menuType); 
     if (itemData.getTitle().equals("Some specific title") { 
      // Do specific style changes on textview 
     } 
    } 

    @Override 
    public void setTextAppearance(int textAppearance) { 
     // Text cutomization 
     mTextView.setTextSize(TypedValue.COMPLEX_UNIT_SP, MENU_ITEM_FONT_SIZE_SP); 
     mTextView.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.menuItemBackgroundColor)); 
    } 
} 
0

Sie getActionView Methode vonnennen könnte, die Ihnen View zurückgibt. An diesen View könnten Sie Hintergrundfarbe ändern, wie ich weiter unten Beispiel habe in -

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 

    item.getActionView().setBackgroundColor(ContextCompat.getColor(this, 
              R.color.colorAccent)); 
    return super.onOptionsItemSelected(item); 
    } 
+0

gut taten Sie es, Farbe zu ändern, wenn Element ausgewählt werden würde. Ich möchte es dauerhaft ändern. –

Verwandte Themen