2013-04-14 86 views
2

當前爲我的應用程序使用Theme.Sherlock主題。有可能改變TimePicker小部件的主題。我想將藍色分隔線改爲綠色,將白色文字改爲黑色。Android如何更改TimePicker主題?

我還沒有找到任何可用的東西(不幸的是TimePicker從android-holo-colors.com工具中丟失),希望你有一個好主意。

謝謝!

+0

Tumbleweed帖子還是什麼?我也想知道這是否可能。 –

回答

0

由於Android SDK不允許您修改timepicker內的元素。你需要一種方法來進行黑客行爲。 對於文本顏色,你需要改變theme.Here是我的Fragment中的一個小例子。 重點是「R.style.Picker_Black」,我將主題設置爲「Theme.Holo.Light」,以便在時間選擇器中顯示「黑色」文本顏色。

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    final Context contextThemeWrapper = new ContextThemeWrapper(getActivity(), R.style.Picker_Black); 
    LayoutInflater localInflater = inflater.cloneInContext(contextThemeWrapper); 
    View v = localInflater.inflate(R.layout.fragment_booking, container, false); 
    return v; 
    } 

定義風格 「style.xml」

<style name="Picker.Black" parent="android:Theme.Holo.Light"> 
    <item name="android:editTextStyle">@style/Widget.EditText.White</item> 
    </style> 

針對分配:

public class CustomTimePicker extends TimePicker { 
    public CustomTimePicker(Context context) { 
    super(context); 
    init(); 
    } 

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

    public CustomTimePicker(Context context, AttributeSet attrs, int defStyle) { 
    super(context, attrs, defStyle); 
    init(); 
    } 

    private void init() { 
    removeAllDividers(this); 
    } 

    private void removeAllDividers(ViewGroup picker) { 
    for (int i = 0; i < picker.getChildCount(); i++) { 
     View view = picker.getChildAt(i); 
     if (view instanceof NumberPicker) { 
     try { 
      Field field = NumberPicker.class.getDeclaredField("mSelectionDivider"); 
      field.setAccessible(true); 
      field.set(view, null); 
     } catch (Exception e) { 
     } 
     } else if (view instanceof ViewGroup) { 
     removeAllDividers((ViewGroup) view); 
     } 
    } 
    } 
} 
0

雖然我有點晚了這個答案,但對於那些誰將來懷疑。添加在gradle

compile 'com.github.rey5137:material:1.2.2' 

這是我所見過的best library。用它。它包含您需要的所有信息。