9

を使用して、appcompat-v7 toolbarアイコン付きのメニューを追加しました。

じぶんのmenu_items.xml

<item
    android:id="@+id/quit"
    android:title="Quit"
    android:icon="@drawable/ic_power"
    android:orderInCategory="700"
    app:showAsAction="never"/>
<item
    android:id="@+id/app_settings"
    android:orderInCategory="600"
    android:icon="@drawable/ic_cog"
    app:showAsAction="never"
    android:title="Settings"/>
<item
    android:id="@+id/help"
    android:orderInCategory="500"
    android:title="Help"
    android:icon="@drawable/ic_help"
    app:showAsAction="always" />
<item
    android:id="@+id/logout"
    android:orderInCategory="400"
    android:title="Logout"
    android:icon="@drawable/ic_logout"
    app:showAsAction="ifRoom" />
<item
    android:id="@+id/tip"
    android:orderInCategory="300"
    android:title="Give Tip"
    android:icon="@drawable/ic_coffee"
    app:showAsAction="ifRoom" />
<item
    android:id="@+id/withdraw"
    android:orderInCategory="200"
    android:title="Withdraw"
    android:icon="@drawable/ic_bank"
    app:showAsAction="ifRoom" />
<item
    android:id="@+id/deposit"
    android:orderInCategory="100"
    android:title="Deposit"
    android:icon="@drawable/ic_cash_multiple"
    app:showAsAction="ifRoom" />

アイコンはもともと黒ですが、使用するとツールバーに白で表示されることを期待していました

app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"

代わりに、黒いアイコンが表示されます。 黒のアイコン

私のtoolbar.xml

<android.support.v7.widget.Toolbar
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/toolbar"
    android:layout_height="?attr/actionBarSize"
    android:layout_width="match_parent"
    app:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"
    android:background="?attr/colorPrimary"/>

アイコンを白く表示するにはどうすればよいですか?

編集:

ツールバーに表示されているアイコンは、色を変更したい唯一のアイコンです.オーバーフローしたアイテムのアイコンを含むすべてのアイコンではありません... オーバーフロー アイテム

4

2 に答える 2

5

このように手動で設定できます

 @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.menu_main, menu);

        for(int i = 0; i < menu.size(); i++){
            Drawable drawable = menu.getItem(i).getIcon();
            if(drawable != null) {
                drawable.mutate();
                drawable.setColorFilter(getResources().getColor(R.color.whiteColor), PorterDuff.Mode.SRC_ATOP);
            }
        }

        return true;
    }

特定のアイコンの場合:

MenuItem favoriteItem = menu.findItem(R.id.action_favorite);
Drawable newIcon = (Drawable)favoriteItem.getIcon();
newIcon.mutate().setColorFilter(Color.argb(255, 200, 200, 200), PorterDuff.Mode.SRC_IN);
favoriteItem.setIcon(newIcon);

向きを変更するランタイムの場合、条件を使用して向きを確認し、この条件でメニューの色を設定できます。

このような:

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    // Checks the orientation of the screen
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();

       // here you can set menu item color if it landScape

    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();        
    }
}

または、画面を回転させたくない場合は、次のようにマニフェスト ファイルに設定するだけです。

<activity android:name=".activities.MainActivity"
            android:screenOrientation="portrait">

または、特定のアイテムに itemIconTint を使用できます。

<item
    android:id="@+id/quit"
    android:title="Quit"
    android:icon="@drawable/ic_power"
    android:orderInCategory="700"
    **app:itemIconTint="@color/black"**
    app:showAsAction="never"/>
<item
    android:id="@+id/app_settings"
    android:orderInCategory="600"
    android:icon="@drawable/ic_cog"
    app:showAsAction="never"
    **app:itemIconTint="@color/black"**
    android:title="Settings"/>
于 2016-07-18T06:02:35.430 に答える
-1

あなたのメインテーマ

 <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

    <item name="android:popupMenuStyle">@style/PopupMenu</item>
   </style>

ポップアップまたはメニュー項目のテーマも、ポップアップの背景、サイズ、ポップアップメニューのようなものを追加したい場合は、削除したい場合に追加できます

    <style name="PopupMenu" parent="android:Theme.Holo.Light">
    <item name="android:popupBackground">@android:color/white</item>
    <item name="android:textColor">@color/white</item>
    <item name="android:textSize">9sp</item>


    <item name="textAppearanceLargePopupMenu">@style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Large</item>
    <item name="textAppearanceSmallPopupMenu">@style/TextAppearance.AppCompat.Light.Widget.PopupMenu.Small</item>
    </style>

  <color name="white">#ffffffff</color>
于 2016-07-18T06:25:05.857 に答える