2017-07-26 3 views
1

Ceci est ma première activité. Cela fonctionne bien par programmation.Changer la couleur de OverFlow Menu

Le seul problème auquel je suis confronté est que le OverFlow-Menu est un thème sombre lorsqu'il est appelé par la touche Menu matériel.

J'ai fourni toutes les lignes de code essentielles dans cet exemple.

public class StartingActivity extends AppCompatActivity implements LoginActivity_Tab.loginActivityTab_interface { 

private static final String LOGIN_URL = "http://rollhack.96.lt/login.php"; 
private SectionsPagerAdapter mSectionsPagerAdapter; 
private ViewPager mViewPager; 
private TabLayout tabLayout; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_starting); 

    includeWidgets(); 
} 

private void includeWidgets() { 

    ///// Tab Layout ///// 

    mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager()); 

    mViewPager = (ViewPager) findViewById(R.id.container); 
    setupViewPager(mViewPager); 

    tabLayout = (TabLayout) findViewById(R.id.tabs); 
    tabLayout.setupWithViewPager(mViewPager); 

    ///// ToolBar  ///// 

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
    setSupportActionBar(toolbar); 
    setTitle("Note Pad"); 
} 

///// This method is called for Exiting the App ///// 
public void exitApp() { 
    final AlertDialog.Builder exit = new AlertDialog.Builder(StartingActivity.this); 
    exit.setTitle("Exit Application") 
      .setMessage("Are you sure you want to Exit the application?") 
      .setCancelable(true) 
      .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { 
       @Override 
       public void onClick(DialogInterface dialogInterface, int i) { 
        StartingActivity.this.finishAffinity(); 
       } 
      }) 
      .setNegativeButton(android.R.string.no, null); 
    exit.create().show(); 
} 

///// This method is called to assign the Key Events ///// 
@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) { 
    switch (keyCode) { 
     case KeyEvent.KEYCODE_BACK: 
      exitApp(); 
      return true; 
    } 
    return super.onKeyUp(keyCode, event); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.menu_starting_activity, menu); 
    return super.onCreateOptionsMenu(menu); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.menu_settings: 
      return Boolean.parseBoolean(null); 
     case (R.id.menu_about): 
      return Boolean.parseBoolean(null); 
     case (R.id.menu_exit): 
      exitApp(); 
      return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

C'est à quoi il ressemble quand il est appelé par l'icône du menu de débordement de la ActionBar

Voici comment mon overflow-menu App ressemble lorsque la touche Menu du matériel est pressé

Répondre

0

menu débordement par Icône

Vous pouvez modifier la couleur de l'arrière-plan du menu de débordement en ajoutant un nouveau style dans style.xml.

<style name="OverflowMenu" 
    parent="@android:style/Theme.Holo"> 
<item name="android:popupMenuStyle">@style/MyOverflowMenu</item> 
<item name="android:itemTextAppearance">@style/TextAppearance</item> 
</style> 
<style name="MyOverflowMenu" 
    parent="@android:style/Widget.Holo.ListPopupWindow"> 
<item name="android:popupBackground">@color/your_color</item> 
</style> 
<style name="TextAppearance"> 
<item name="android:textColor">@color/your_color</item> 
</style> 

Menu Overflow par clé matérielle

Pour changer la couleur du menu de débordement appelé par clé matérielle, ajouter un autre style.

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="actionBarPopupTheme">@style/OverflowMenuHardware</item> 
    </style> 

    <style name="OverflowMenuHardware" parent="ThemeOverlay.AppCompat.Dark"> 
    <item name="android:textColorSecondary">@color/your_color</item> 
    <item name="android:colorBackground">@color/your_color</item> 
    </style> 

Mettre en oeuvre l'une de ces options pour changer la couleur de débordement soit le menu celui qui est appelé par l'icône (ancien code) ou par clé matérielle (code ci).

+0

Pouvez-vous décrire un peu plus? Eh bien j'ai essayé ce que tu m'as suggéré mais rien de bénéfique n'arrive. L'application agit comme avant. – DRAXLER

+0

Vous souhaitez modifier la couleur du menu de débordement correctement? Le code donné le fait. Définissez la couleur de l'arrière-plan du menu de débordement de la même couleur que celle appelée par la clé matérielle. – Abhi

+0

Vérifiez le code édité. Vous pouvez changer l'une des couleurs d'arrière-plan. – Abhi