LoginSignup
5
6

More than 5 years have passed since last update.

Appcompat-v7のスタイル設定について忘備録

Last updated at Posted at 2015-11-23

※自分がよく忘れてしまうので、残しています。ソースコード読みつつ動作確認はしていますが、あっさり目を通しただけなので正しくない(あるいは記事内容が古くなる)可能性があります。

要点

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:backgroundandroid: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のスタイル変更したいんだけど、どの項目変えたらいいんじゃい、という時はこの設定を思い出してみてください。

5
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6