[英]How to change the font family of SwitchCompat?
我注意到 SwitchCompat 的字體似乎沒有隨我在fontFamily字段中設置的內容而改變。 我已經使用樣式定制fontFamily中(這在TextViews作品),甚至switchTextAppearance場也試過。 它確實適用於預覽(我知道預覽不是很准確)但不適用於我嘗試在我的測試設備上運行它。
這是我的 SwitchCompat:
<android.support.v7.widget.SwitchCompat
style="@style/MyStyle.Body"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fontFamily="@font/my_font_family"
android:text="Enable"
app:switchTextAppearance="@style/MyStyle.Body"/>
這是我的風格:
<style name="MyStyle.Body" parent="Base.TextAppearance.AppCompat.Body1">
<item name="android:textSize">14sp</item>
<item name="android:fontFamily">@font/my_font_family</item>
<item name="android:textColor">@color/color_primary_text</item>
</style>
如你所見,我只想改變它的字體
編輯
我已經改變了我的風格
<style name="MyStyle.Switch" parent="Widget.AppCompat.CompoundButton.Switch">
<item name="android:textSize">14sp</item>
<item name="android:textColor">@color/color_primary_text</item>
<item name="android:fontFamily">@font/my_font_family</item>
<item name="fontFamily">@font/my_font_family</item>
</style>
不過還是不行
XML 設置不起作用,因此我使用以下代碼:
someSwitch.setTypeface(ResourcesCompat.getFont(context, R.font.roboto));
試試
parent="Base.TextAppearance.AppCompat.Body1"
換成這個
parent="TextAppearance.AppCompat.Widget.Switch"
試試下面
public class CustomSwitchCompact extends SwitchCompat {
public CustomSwitchCompact(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public CustomSwitchCompact(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public CustomSwitchCompact(Context context) {
super(context);
init();
}
private void init() {
if (!isInEditMode()) {
Typeface myFonts = Typeface.createFromAsset(getContext().getAssets(),
"fonts/Roboto_Bold.ttf");
setTypeface(myFonts);
}
}
}
XML文件
<com.test.CustomSwitchCompact
android:id="@+id/switch_compat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:checked="false"
android:padding="20dp"
android:text="SwitchCompat"
android:textOff="OFF"
android:textOn="ON"
app:showText="true" />
使用自定義字體實現 SwitchCompact 的另一種方法
<android.support.v7.widget.SwitchCompat
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/adamSwitch"
android:textColor="@color/top_color"
android:textAppearance="@color/top_color"
android:gravity="center"
app:showText="true"
android:fontFamily="@font/my_font_family"
app:theme="@style/Custom.Widget.SwitchCompat"
app:switchPadding="5dp"
/>
在 style.xml 中
<style name="Custom.Widget.SwitchCompat" parent="Widget.AppCompat.CompoundButton.Switch" >
<item name="android:textColorPrimary">@color/blue</item>
<item name="android:textSize">14sp</item>
<item name="android:fontFamily">@font/my_font_family</item>
<item name="android:textColor">@color/color_primary_text</item>
</style>
唯一對我setSwitchTypeface
是setSwitchTypeface
,而不是setTypeface
:
my_switch.setSwitchTypeface(ResourcesCompat.getFont(context, R.font.my_font))
我已經使用android:textAppearance
而不是android:switchTextAppearance
並且自定義字體現在可以使用了。 另外我的開關樣式有Widget.AppCompat.CompoundButton.Switch
作為父
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.