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ソースコードによると、オン/オフテキストのサポートがあるはずです: /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
_に入れる方法があるかどうか、私はまだ知りたいです。
最後に、アプリ全体に同じスタイルを適用する方法を見つけました。次の行をthemes.xml
<item name="switchStyle">@style/Custom.Widget.SwitchCompat</item>
そして、私のstyles.xml
<style name="Custom.Widget.SwitchCompat" >
<item name="Android:thumb">@drawable/btn_switch_selector</item>
<item name="track">@drawable/btn_switch_bg_selector</item>
<item name="showText">true</item>
<item name="Android:textOn">@string/common_yes</item>
<item name="Android:textOff">@string/common_no</item>
</style>
スタイルには親を含める必要があります
<item name="switchStyle">@style/MySwitchCompat</item>
<style name="MySwitchCompat" parent="Widget.AppCompat.CompoundButton.Switch">
<item name="Android:textColor">@color/accent</item>
<item name="Android:fontFamily">sans-serif-light</item>
</style>