2017-08-15 95 views
0

我需要更改我的應用程序中項目的背景,但我沒有發現任何關於它的事情。我使用項目&菜單爲我的抽屜現在我需要更改標題背景。我知道,如果使用Listview我可以改變它,但我想現在如果有辦法。謝謝更改項目背景

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

回答

0

抽屜菜單可悲的是不那麼容易定製,你不能做到這一點在經典的方式都缺乏在其最初的概念參數。

做一些你必須創建一個準確命名爲「design_navigation_item.xml」

然後在此佈局,你應該添加自己的ItemView控件擴展分類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"/> 

在你MyNavigationView layout.xml類,你可以再覆蓋諸如

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

方法你可以調用方法哪個會回覆你View。在那View你可以改變背景顏色,像我一樣在下面的例子 -

@Override 
    public boolean onOptionsItemSelected(MenuItem item) { 

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

但你也當項目將選擇它來改變顏色。我想永久地改變它。 –