2013-12-10 62 views
0

我使用发布在this answer中的代码尝试将我的首选项设置为不同的样式(即字体字体和大小),并确实设置了正确的字体。这个代码的问题是,它扩展了基本偏好类,所以我不能创建特定的偏好设置(ListPreference,CheckboxPreference等),我坚持使用基本偏好对象,我甚至不知道它们是否有任何适当的在用户交互方面使用。首选项的自定义字体

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

回答

1

您可以在公共静态方法中使用Util类型的类。您必须扩展您仍然使用的每个首选项类,但是您可以将诸如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); 
    } 
} 
+0

这是一些改进。谢谢! –