首选项的自定义字体

时间:2013-12-10 16:28:44

标签: android preferenceactivity

我使用this answer中发布的代码尝试将我的首选项设置为不同的样式(即字体字体和大小),并确实正确设置了字体。这段代码的问题是,它扩展了基本的Preference类,所以我无法创建特定的首选项(ListPreferenceCheckboxPreference等),而且我遇到了基本的首选项,我不知道甚至知道他们是否在用户互动方面有任何正确的用途。

现在我可以扩展我使用的每个Preference类来包含CustomPreference中的代码,但这对我来说似乎是不好的做法。由于Java中没有多重继承,是否有任何解决方案(可能是任何OO解决方法)可以将此样式功能添加到我的CheckBoxPreferencesListPreferencesPreferenceScreen等等。

1 个答案:

答案 0 :(得分:1)

您可以将Util-type类与公共静态方法一起使用。您必须扩展您仍在使用的每个首选项类,但您可以将setStyleAlarmed之类的内容推迟到Utils类,而不是在每个自定义首选项类中使用相同的代码。

public class PreferenceUtils {
    public static void onBindView(View view) {
        switch (style) {
            case STYLE_ALARMED:
                setStyleAlarmed(view);
                break;
            case STYLE_NORMAL:
                setStyleNormal(view);
                break;
            case STYLE_WARNING:
                setStyleWarning(view);
                break;
            //...
        }
    }

    // Move other methods here, e.g. setStyleAlarmed().
}

public class CustomPreference extends Preference implements PreferenceStyle {
    @Override
    protected void onBindView(View view) {
        super.onBindView(view);
        PreferenceUtils.onBindView(view);
    }
}