[Android] SwitchCompat 切り替えスイッチの基本設定

切り替えボタンとしてはSwitchというのもありますが、SwitchCompatの方が使いまわしがよさそうです
つまみとかトラックのカスタマイズをしてみたかったのですが、androidx以降の解説があまりないようなので確認してみました

Android Studio
2021.2.1




SwitchCompat

 
Switchと見た目は同じなのですが、Switchを直接継承しているわけではありません
ただ、Switchと同様にwidget.CompoundButtonを継承しています

java.lang.Object
   ↳ android.view.View
   ↳ android.widget.TextView
   ↳ android.widget.Button
   ↳ android.widget.CompoundButton
   ↳ androidx.appcompat.widget.SwitchCompat

また、「Design」のPaletteを見てもSwitchはありますがSwitchCompatはありません
 

 

SwitchCompatの基本設定

 
レイアウトとしては、Switchと同様ですが
androidx.appcompat.widget.SwitchCompat
で定義します


ユーザーによるタップやフリップを受け取るために
setOnCheckedChangeListener()
onCheckedChanged()
を使います(Lambda式で簡略化できますが)


また、Switchではwarningが出ていました
@SuppressLint(“UseSwitchCompatOrMaterialCode”)
tools:ignore=”UseSwitchCompatOrMaterialXml”
が無くなります

 

thumb と track の色を変更する

 
thumbは親指と英語では訳されますが「つまみ」と言ったほうが日本人には分かりやすい
つまみはknobかhandleと訳されますが、key wordとしてthumbを使います
また、thumbの背後の部分はtrackと呼びます
SwitchCompatのウィジェットとしての背景は別にあるので、そこは注意です

1x1.trans - [Android] SwitchCompat 切り替えスイッチの基本設定


thumbTint と trackTint はそれぞれ色を定義しています
  • thumb: thumbTint
  • track: trackTint

この色を変えてみます

style の設定:
theme.xmlに新しくWidget.MaterialComponents.CompoundButton.Switchを引き継いだstyleを作ります
res\values\themes\themes.xml


thumb と track のselectorを作ります
res\drawable\thumb_selector.xml


res\drawable\track_selector.xml


このstyleをactivity_main.xml に設定します

 

サンプルコード

 

MainActivity.java


activity_main.xml


strings.xml

themes.xml


thumb_selector.xml


track_selector.xml

これで実行させてみましょう

References:
切り替えボタン | Android デベロッパー
SwitchCompat – Android Developers

シェアする

  • このエントリーをはてなブックマークに追加

フォローする