web-dev-qa-db-ja.com

AppCompatツールバー:ActionModeでオーバーフローアイコンの色を変更する

AppCompatツールバーを使用すると、ActionModeの変更時にオーバーフローメニューアイコンの色を変更できます。

たとえば、通常のツールバーモードでは、オーバーフローアイコンは白になります。そして、ActionModeで黒に変わります。これまでのところ、タイトルモードだけでなくアクションモードの背景も変更できました。しかし、オーバーフローメニューアイコンの色を変更する方法をまだ見つけていません。

利用可能な答えがあることを知っています: Change ActionMode Overflow icon

最初の解決策を試しましたが、オーバーフローアイコンが見つかりませんでした。

2番目のソリューションでは、50Lの遅延があっても、オーバーフローメニューアイコンがActionModeの意図した色を点滅させ、非常に耳障りな短い一瞬になります。

23
Jun

テーマ属性に次の行を追加します。

<item name="Android:textColorSecondary">@Android:color/white</item>
60
Piyush

これは、Android:textColorSecondaryテーマ属性を設定することで実現できます。

たとえば、テーマMyToolbarStyleを使用する次のツールバーがあるとします。

<Android.support.v7.widget.Toolbar
  xmlns:app="http://schemas.Android.com/apk/res-auto"
  Android:id="@+id/main_toolbar"
  Android:layout_width="match_parent"
  Android:layout_height="wrap_content"
  Android:minHeight="?attr/actionBarSize"
  theme="@style/MyToolbarStyle"
/>

次に、ThemeOverlay.AppCompat.ActionBarから継承するMyToolbarStyleスタイルを定義します。最後に、Android:textColorSecondaryの項目を追加して、オーバーフローアイコンの色を変更します。

<style name="MyToolbarStyle" parent="ThemeOverlay.AppCompat.ActionBar">
  <item name="Android:textColorSecondary">#333333</item>
</style>
14
Patrick McLaren
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
     <item name="Android:actionOverflowButtonStyle">@style/ActionButton.Overflow.Icon</item>
 </style>

 <style name="ActionButton.Overflow.Icon" parent="Android:style/Widget.Holo.Light.ActionButton.Overflow">
     <item name="Android:src">@mipmap/yourwanticon</item>
 </style>
7
androidmalin

Res-> styles.xmlにこのコードを追加します

<style name="ToolbarColored" parent="AppTheme">
<item name="Android:textColorSecondary">YOUR_COLOR</item>
</style>

次に、beloveのようなXCMLファイルの「ToolbarColored」スタイル

<Android.support.v7.widget.Toolbar
        Android:id="@+id/toolbar"
        app:theme="@style/ToolbarColored"
        Android:layout_width="match_parent"
        Android:layout_height="?attr/actionBarSize"
        Android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay" />
<style name="AppTheme" parent="Theme.AppCompat.Light">
    <item name="Android:actionOverflowButtonStyle">@style/ActionButtonOverflow</item>

    <!-- Support library compatibility -->
    <item name="actionOverflowButtonStyle">@style/ActionButtonOverflow</item>
</style>

<style name="ActionButtonOverflow" parent="@style/Widget.AppCompat.ActionButton.Overflow">
    <item name="Android:tint">@color/brand_white</item>
</style>
2
Niranjan

ツールバーのオーバーフローメニューアイコンの色を正しく変更するには、ツールバーのテーマをAppCompatの暗いActionBarテーマに設定します。例えば:

Res/values/style.xmlファイルで、この方法でAppCompatを継承するテーマを作成します。

<style name="AppTheme.MyThemeName" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />

次に、ツールバーのテーマをこのテーマに設定します。

<Android.support.v7.widget.Toolbar
  Android:id="+id/my_toolbar_id
  Android:layout_width="match_parent"
  Android:layout_height="@dimen/my_toolbar_height"
  Android:theme="@style/AppTheme.MyThemeName">

</Android.support.v7.widget.Toolbar>
2
Chad Mx

アクティビティXMLでツールバーを使用している場合は、次のようなものを使用できます

toolbar?.navigationIcon?.setColorFilter(ContextCompat.getColor(this, Android.R.color.black), PorterDuff.Mode.SRC_ATOP)
1
Abhishek

最初にカスタムスタイルを作成します

 <style name="ToolbarColoredBackArrow" parent="AppTheme">
    <item name="Android:textColorSecondary">@color/white</item>
 </style>

次に、ツールバーに追加します

     <Android.support.v7.widget.Toolbar
          Android:id="@+id/toolbar"
          Android:layout_width="match_parent"
          Android:titleTextColor="@color/white"
          app:theme="@style/ToolbarColoredBackArrow"
          Android:layout_height="?attr/actionBarSize"
          app:layout_scrollFlags="scroll|enterAlways"
          Android:background="?attr/colorPrimary" />
1
pavel
<style name="ToolBarTheme" parent="ThemeOverlay.AppCompat.ActionBar">
    <item name="Android:tint">@color/colorAccent</item>

上記のtheme.set色合いを自分の色で作成し、このテーマをツールバーに追加します。

<androidx.appcompat.widget.Toolbar
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:minHeight="?attr/actionBarSize"
        Android:theme="@style/ToolBarTheme"/>
0

whiteオーバーフローメニューアイコンが必要な場合は、単にAndroid:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"ツールバーレイアウトコード。

darkオーバーフローメニューアイコンが必要な場合は、Android:theme="@style/Base.Widget.AppCompat.Light.PopupMenu"

したがって、最終的なコードは次のようになります。

<Android.support.v7.widget.Toolbar
        Android:id="@+id/a_main_tb"
        Android:layout_width="match_parent"
        Android:layout_height="?actionBarSize"
        Android:background="@color/colorPrimary"
        Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:title="@string/app_name"
        app:titleTextColor="#ffffff"
        />

また、メニュー項目の色も変更することを理解する必要があります。

0
Daniel