ツールバーの上のmenuの 一番右側の「:」のアイコンのカスタマイズ
2019/03/07 追記
- 以下の内容は執筆当時は動作していましたが、2019年3月7日現在の開発環境では動作しないようです。
- 現在ご利用いただく場合は以下のツイートで紹介されている記事や現在の公式ドキュメントを参照してください。
operandoOS さん、ご指摘ありがとうございました!
コード見た感じどこかのバージョンからこれ動かなくなってる気がするなー
— shinobu.aab / piece of cake, inc. (@operandoOS) March 7, 2019
Styleでの設定が無視される感じかも?https://t.co/l2BvKbtTDq
“Toolbar Delight – Android UI Patterns” (1 user) https://t.co/xvklc6rvBV
— shinobu.aab / piece of cake, inc. (@operandoOS) March 7, 2019
調べ直したくない一心でまとめています。主に参考にしていたのは下記ブログです。
https://medium.com/@lucasurbas/making-android-toolbar-responsive-2627d4e07129
一番右側の「:」のアイコンのカスタマイズ
neverに設定しているメニューの要素は右側に「:」みたいな感じで表示されている アイコンをタップすると利用できますが、その要素のカスタマイズについて。
まず、この「:」の要素は、ActionOverflowButton
というそうです。
直接いじりにくいですが、Activityで利用しているテーマのスタイルのactionOverflowButtonStyle
という要素の設定からいじることが可能らしく、下記に例を示します。
<!-- styles.xml --> <resources> <!-- Base application theme. --> <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="actionOverflowButtonStyle">@style/MyOverFlow</item> </style> <!-- Styles --> <style name="MyOverFlow" parent="Widget.AppCompat.ActionButton.Overflow"> <item name="android:src">@drawable/black_square_48dp</item> <item name="android:paddingRight">48dp</item> </style> </resources> <!-- toolbar --> <android.support.v7.widget.Toolbar android:id="@+id/custom_toolbar" android:background="@android:color/darker_gray" xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:theme="@style/AppTheme" android:layout_height="?attr/actionBarSize" > </android.support.v7.widget.Toolbar>
もっと詳しくは、サポートライブラリのリポジトリを落っことして、ActionButton.Overflow
で全文検索をかけてください。
https://github.com/android/platform_frameworks_support
ポイントはAppCompatのスタイルを継承し、ActivityもAppcompatActivityを利用することです*1。
参考:
http://stackoverflow.com/questions/26475918/change-actionoverflowbuttonstyle-with-appcompat-v21
一番右以外のアイコンについては、うまくスタイルの指定が効いているのを確認できなかったし、アイコンの指定で対応しやすいのでアイコン画像側で対応するか、Toolbarの子要素として用意する方向で...。
*1:AppcompatActivityを利用しないとAPI20以下で指定が効きません。