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

這是一些改進。謝謝! –