1

これが私の開始アクティビティです。プログラム的には正常に動作しています。

私が直面している唯一の問題は、ハードウェア メニュー キーで呼び出されたときに OverFlow-Menu がダーク テーマになることです。

このサンプルでは、​​すべての重要なコード行を提供しました。

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);
}

これは、ActionBar のオーバーフロー メニュー アイコンによって呼び出されたときの外観です。

これは、ハードウェア メニュー キーが押されたときにアプリの OverFlow-Menu がどのように見えるかです

4

1 に答える 1

0

アイコン別オーバーフローメニュー

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>

ハードウェア キーによるオーバーフロー メニュー

ハードウェア キーによって呼び出されるオーバーフロー メニューの色を変更するには、別のスタイルを追加します。

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

アイコン(前のコード)またはハードウェアキー(後のコード)によって呼び出されるオーバーフローメニューの色を変更するには、これらのいずれかを実装します。

于 2017-07-27T04:39:54.387 に答える