Android 更改“ListPreference”摘要的字体`
我尝试更改Android 更改“ListPreference”摘要的字体`,android,listpreference,Android,Listpreference,我尝试更改首选项屏幕的所有首选项的字体。 除了列表首选项的摘要之外,它在任何地方都发生了更改。 有人知道如何在列表首选项的摘要上应用自定义字体吗 更新 我想将我的自定义字体应用于“资产”文件夹,而不是内置文件夹。另外android:textAppearanceListItemSecondary需要API 21,我的应用程序至少支持API 15 试试这个 <!-- Base application theme. --> <style name="AppTheme" pa
首选项屏幕
的所有首选项的字体。
除了列表首选项的摘要
之外,它在任何地方都发生了更改。
有人知道如何在列表首选项的摘要上应用自定义字体吗
更新
我想将我的自定义字体应用于“资产”文件夹,而不是内置文件夹。另外android:textAppearanceListItemSecondary
需要API 21,我的应用程序至少支持API 15 试试这个
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="android:textAppearanceListItemSecondary">@style/textAppearanceListItemSecondaryCustom</item>
</style>
<style name="textAppearanceListItemSecondaryCustom">
<item name="android:textSize">14sp</item>
<item name="android:typeface">monospace</item>
</style>
@样式/文本外观ListItemSecondary自定义
14便士
单空间
最后是更改列表首选项摘要字体的方法
覆盖ListPreference
的onBindViewHolder
方法来设置自定义字体。检查下面的自定义类
public class CustomListPreference extends ListPreference {
private String typefaceTitle, typefaceSummary;
public CustomListPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init(context, attrs);
}
public CustomListPreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context, attrs);
}
public CustomListPreference(Context context, AttributeSet attrs) {
super(context, attrs);
init(context, attrs);
}
public CustomListPreference(Context context) {
super(context);
}
@Override
public void onBindViewHolder(PreferenceViewHolder holder) {
super.onBindViewHolder(holder);
if(!TextUtils.isEmpty(typefaceTitle)) {
TextView titleView = (TextView) holder.findViewById(android.R.id.title);
titleView.setTypeface(FontManager.getInstance().getFont(typefaceTitle));
}
if(!TextUtils.isEmpty(typefaceSummary)){
final TextView summaryView = (TextView) holder.findViewById(
android.R.id.summary);
summaryView.setTypeface(FontManager.getInstance().getFont(typefaceSummary));
}
}
private void init(Context context, AttributeSet attrs){
TypedArray a = context.obtainStyledAttributes(attrs,
R.styleable.Preference);
typefaceTitle = a.getString(R.styleable.Preference_typefaceTitle);
typefaceSummary = a.getString(R.styleable.Preference_typefaceSummary);
a.recycle();
}}
attrs.xml
首选项屏幕中的用法
<YOUR_CustomListPreference_PACKAGE_NAME.CustomListPreference
android:defaultValue="X"
android:dialogTitle="Dialog Title"
android:entries="@array/list_item_title"
android:entryValues="@array/list_item_value"
android:key="pref_list"
android:summary="%s"
android:title="@string/Preference Title"
app:typefaceTitle="YOUR FONT NAME"
app:typefaceSummary="YOUR FONT NAME"/>
希望这对其他人有帮助
<YOUR_CustomListPreference_PACKAGE_NAME.CustomListPreference
android:defaultValue="X"
android:dialogTitle="Dialog Title"
android:entries="@array/list_item_title"
android:entryValues="@array/list_item_value"
android:key="pref_list"
android:summary="%s"
android:title="@string/Preference Title"
app:typefaceTitle="YOUR FONT NAME"
app:typefaceSummary="YOUR FONT NAME"/>