我使用this answer中发布的代码尝试将我的首选项设置为不同的样式(即字体字体和大小),并确实正确设置了字体。这段代码的问题是,它扩展了基本的Preference类,所以我无法创建特定的首选项(ListPreference
,CheckboxPreference
等),而且我遇到了基本的首选项,我不知道甚至知道他们是否在用户互动方面有任何正确的用途。
现在我可以扩展我使用的每个Preference
类来包含CustomPreference
中的代码,但这对我来说似乎是不好的做法。由于Java中没有多重继承,是否有任何解决方案(可能是任何OO解决方法)可以将此样式功能添加到我的CheckBoxPreferences
,ListPreferences
,PreferenceScreen
等等。
答案 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);
}
}