カスタム スタイルを SwitchCompat に適用したいと考えています。オンとオフの状態のドローアブルとテキストを変更します。どうすればこれを達成できますか? これがどのように行われるかについての例は見つかりません。私はstyles.xmlで次のことを試しましたが、明らかに正しい親を使用していません:
<style name="Switch" parent="android:Widget.AppCompat.Widget.CompoundButton.SwitchCompat">
<item name="android:textOn">@string/common_yes</item>
<item name="android:textOff">@string/common_no</item>
<item name="android:thumb">@drawable/btn_switch_selector</item>
<item name="android:track">@drawable/btn_switch_bg_selector</item>
</style>
編集
コードでドローアブルを変更することができました。
switchView.setThumbResource(R.drawable.btn_switch_selector);
switchView.setTrackResource(R.drawable.btn_switch_bg_selector);
しかし、スイッチのテキストを変更する方法はまだ見つかりません。次のスニペットは機能していないようです。たぶん、さらにテキストプロパティを設定する必要がありますか?
switchView.setTextOn(context.getString(R.string.common_yes));
switchView.setTextOff(context.getString(R.string.common_no));
SwitchCompat ソース コードによると、オン/オフ テキストのサポートがあるはずです: https://android.googlesource.com/platform/frameworks/support/+/421d8baa4a524e1384bcf033360bccaf8d55081d/v7/appcompat/src/android/support/v7/widget/ SwitchCompat.java
{@link #setText(CharSequence) text} プロパティはスイッチのラベルに表示されるテキストを制御し、{@link #setTextOff(CharSequence) off} および {@link #setTextOn(CharSequence) on} テキストはテキストを制御します。親指に。
編集 2
最後にコードの解決策を見つけました。スイッチにテキストを表示するには、 をsetShowText()
に設定する必要があるようです。true
switchView.setTextOn(context.getString(R.string.common_yes));
switchView.setTextOff(context.getString(R.string.common_no));
switchView.setShowText(true);
switchView.setThumbResource(R.drawable.btn_switch_selector);
switchView.setTrackResource(R.drawable.btn_switch_bg_selector);
およびxmlソリューション
<android.support.v7.widget.SwitchCompat
android:id="@+id/view_switch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:thumb="@drawable/btn_switch_selector"
app:track="@drawable/btn_switch_bg_selector"
android:textOn="@string/common_yes"
android:textOff="@string/common_no"
app:showText="true" />
これを に入れる方法があればまだ知りたいですstyles.xml
。