2017-06-30 11 views
0

Ich möchte die Farbe des Textes einer item ändern, die eine menu gruppiert.¿Textfarbe ändern Hauptmenü Android?

Die xml Datei:

<?xml version="1.0" encoding="utf-8"?> 
<menu xmlns:android="http://schemas.android.com/apk/res/android"> 

    <group android:checkableBehavior="single"> 
     <item 
      android:id="@+id/nav_mi_cuenta" 
      android:icon="@mipmap/ic_mi_cuenta" 
      android:title="@string/mi_cuenta" /> 
    </group> 

    <item android:title="@string/herramientas"> 
     <menu> 
      <item 
       android:id="@+id/nav_configuracion" 
       android:icon="@mipmap/ic_config" 
       android:title="@string/configuraci_n" /> 
     </menu> 
    </item> 

</menu> 

I wnat Textfarbe zu ändern:

<item android:title="@string/herramientas"> 

enter image description here

Wie Sie sehen können, kommt Herramientas in schwarz und als der Hintergrund auch schwarz sieht es kaum aus. Ich kann keine Eigenschaft finden, um es zu ändern. Die Farbe des item 'Mis datos' und 'Configuración' ändern es programmatisch wie folgt aus einer externen JSON-Datei von einem Server:

colorElegido = getParseColor(json.getString("colorMenuLateral")); 
navigationView.setBackgroundColor(colorElegido); 

colorElegido = getParseColor(json.getString("colorFuenteMenuLateral")); 
ColorStateList colorList = getColorList(colorElegido); 

navigationView.setItemTextColor(colorList); 
+0

Haben Sie versucht, dies https://stackoverflow.com/questions/32042794/changing-text-color-of-menu-item-in-navigation-drawer –

+0

Überprüfen Sie dies - [stackoverflow.com/a/32114570] (https://Stackoverflow.com/a/32114570/6244429) –

+0

Nicht für mich arbeiten @SunishaSindhu –

Antwort

3

Der folgende Code wird Training,

menu.xml

<?xml version="1.0" encoding="utf-8"?> 
    <menu xmlns:android="http://schemas.android.com/apk/res/android"> 

     <group android:checkableBehavior="single"> 
      <item 
       android:id="@+id/nav_mi_cuenta" 
       android:icon="@mipmap/ic_mi_cuenta" 
       android:title="@string/mi_cuenta" /> 
     </group> 

     <item 
android:id="@+id/herramientas" 
android:title="@string/herramientas"> 
      <menu> 
       <item 
        android:id="@+id/nav_configuracion" 
        android:icon="@mipmap/ic_config" 
        android:title="@string/configuraci_n" /> 
      </menu> 
     </item> 

    </menu> 

Fügen Sie diese in Ihrem Design,

<style name="TextAppearance44"> 
    <item name="android:textColor">#FF0000</item> 
    <item name="android:textSize">20sp</item> 
</style> 
<style name="NavigationDrawerStyle"> 
    <item name="android:textSize">16sp</item><!-- text size in menu--> 
    <item name="android:textColor">#880ACE0A</item> 
    <item name="itemTextColor">#880ACE0A</item> 
</style> 

und in dir r Aktivität,

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); 
     Menu menu = navigationView.getMenu(); 

     MenuItem tools= menu.findItem(R.id.herramientas); 
     SpannableString s = new SpannableString(tools.getTitle()); 
     s.setSpan(new TextAppearanceSpan(this, R.style.TextAppearance44), 0, s.length(), 0); 
     tools.setTitle(s); 
     navigationView.setNavigationItemSelectedListener(this); 

ändern nach Ihnen,

Und andere Textfarbe ändern Sie wie in der XML-Datei verwenden können,

<android.support.design.widget.NavigationView 
    android:id="@+id/nav_view" 
    android:layout_width="wrap_content" 
    android:layout_height="match_parent" 
    android:layout_gravity="start" 
    android:fitsSystemWindows="true" 
    style="@style/NavigationDrawerStyle" 
    app:headerLayout="@layout/nav_header_main" 
    app:menu="@menu/activity_main_drawer" /> 
1

, um eine benutzerdefinierte zu machen popup eine ImageView in toolbar machen

private ImageView setting; 

public void menuOptions() { 
    PopupMenu popup = new PopupMenu(MainActivity.this, setting); 
    // Inflating the Popup using xml file 
    popup.getMenuInflater() 
      .inflate(R.menu.menu_main, popup.getMenu()); 

    //registering popup with OnMenuItemClickListener 
    popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 
     public boolean onMenuItemClick(MenuItem item) { 

      switch (item.getItemId()) { 
       case R.id.button1: 

        return (true); 
       case R.id.button2: 
        // block contacts 

        return (true); 
      } 

      return true; 
     } 
    }); 

    popup.show(); //showing popup menu 
} 

auf Button Klicken Sie auf Anruf über Funktion

menuOptions(); 

im Layout Sie menu_main.xml aufblasen, die gewünschte Ansicht machen.