将字体添加到preferenceScreen标题

时间:2014-02-27 03:24:23

标签: android typeface preferencescreen

我创建了嵌套的preferenceScreens.I想要将自定义字体添加到preferenceScreen title and summary.我尝试使用加载到字体的字体。我怎样才能做到这一点? 感谢。

这是我的preference.xml

   <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
        <PreferenceCategory android:title="@string/manage_device_title" 
         android:key="@string/device_category">
             <PreferenceScreen android:title="@string/manage_device"
                 android:key="@string/manage_device_KEY"
                 android:summary="@string/device_summary" >     
             </PreferenceScreen>
        </PreferenceCategory>
   </PreferenceScreen>

1 个答案:

答案 0 :(得分:6)

您需要为此创建CustomPreferenceCustomPreferenceCategory。在CustomPreference

中添加CustomPreferenceCategorypreference.xml

CustomPreference:

public class CustomPreference extends Preference {
Typeface fontStyle;

public CustomPreference(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);

}

public CustomPreference(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public CustomPreference(Context context) {
    super(context);
}

@Override
protected void onBindView(View view) {
    super.onBindView(view);

    fontStyle = Typeface.createFromAsset(CA.getApplication().getApplicationContext().getAssets(), AppConstants.fontStyle);
    TextView titleView = (TextView) view.findViewById(android.R.id.title);
    titleView.setTypeface(fontStyle);   
    titleView.setTextColor(Color.RED);
    TextView summaryView = (TextView) view.findViewById(android.R.id.summary);
    summaryView.setTypeface(fontStyle); 
    summaryView.setTextColor(Color.RED);
    }
}

CustomPreferenceCategory:

 public class CustomPreferenceCategory extends PreferenceCategory {
Typeface fontStyle;

public CustomPreferenceCategory(Context context, AttributeSet attrs,
        int defStyle) {
    super(context, attrs, defStyle);

}

public CustomPreferenceCategory(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public CustomPreferenceCategory(Context context) {
    super(context);
}

@Override
protected void onBindView(View view) {
    super.onBindView(view);

    fontStyle = Typeface.createFromAsset(CA.getApplication()
            .getApplicationContext().getAssets(), AppConstants.fontStyle);
    TextView titleView = (TextView) view.findViewById(android.R.id.title);
    titleView.setTypeface(fontStyle);
    // titleView.setTextColor(Color.RED);
        }
}

Preference.xml中,您需要使用这些自定义类创建PreferenceCategoryPreference

 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
    <CustomPreferenceCategory android:title="@string/manage_device_title" 
     android:key="@string/device_category">
         <CustomPreference android:title="@string/manage_device"
             android:key="@string/manage_device_KEY"
             android:summary="@string/device_summary" >     
         </CustomPreference>
    </CustomPreferenceCategory>
</PreferenceScreen>

注意:preference.xml中引用时,请使用CustomPerenceCategory和CustomPreference的正确包名称,并根据需要添加fontStyle