※自分がよく忘れてしまうので、残しています。ソースコード読みつつ動作確認はしていますが、あっさり目を通しただけなので正しくない(あるいは記事内容が古くなる)可能性があります。
要点
Appcompat-v7を使っている場合に、SpinnerやAutoTextInput等のスタイルを変更したい時に、どの設定を変えたらよいか確認したい場合は、appcompat-v7/2X.X.X/res/values/values.xml
にあるPlatform.AppCompat
を確認する。
values.xml
<style name="Platform.AppCompat" parent="android:Theme">
<item name="android:windowNoTitle">true</item>
<item name="buttonBarStyle">@android:style/ButtonBar</item>
<item name="buttonBarButtonStyle">@android:style/Widget.Button</item>
・・・
//以下略
具体例
例えば、Spinnerの設定を変えたい場合は、 appcompat-v7/2X.X.X/res/values/values.xml
にあるPlatform.AppCompat
を確認すると、
values.xml
<style name="Platform.AppCompat" parent="android:Theme">
...
<item name="android:spinnerStyle">@style/Widget.AppCompat.Spinner</item>
...
となっているので、Widget.AppCompat.Spinner
をparentにして、必要な項目について上書きすればOKです。Widget.AppCompat.Spinner
を見てみると、
values.xml
<style name="Base.Widget.AppCompat.Spinner" parent="android:Widget.Spinner">
<item name="android:background">@drawable/abc_spinner_mtrl_am_alpha</item>
<item name="android:dropDownSelector">?attr/listChoiceBackgroundIndicator</item>
<item name="android:dropDownVerticalOffset">0dip</item>
</style>
となっていて、 android:background
やandroid:dropDownSelector
が設定変更できるとわかります。
なので、例えば自分のアプリの values/style.xmlに以下を設定してあげます。
style.xml
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!-- 上書きする設定 -->
<item name="android:spinnerStyle">@style/MySpinnerAppTheme</item>
以下略
</style>
<!-- Widget.AppCompat.Spinnerを親にして上書きする -->
<style name="MySpinnerAppTheme" parent="@style/Widget.AppCompat.Spinner">
<item name="android:background">@drawable/my_drop_down</item>
<item name="android:dropDownSelector">@drawable/my_spinner_style</item>
</style>
こうすると、Spinnerのスタイルをカスタマイズすることができます。
ここのUIのスタイル変更したいんだけど、どの項目変えたらいいんじゃい、という時はこの設定を思い出してみてください。