2013-02-13 39 views
2

我正在試圖更改DatePicker對話框的分隔線顏色。更改分隔線顏色Android DatePicker對話框

我創作的風格:

<style name="dialog_custom" parent="@android:style/Widget.DatePicker"> 
     <item name="android:divider">@drawable/dialog_divider</item> 
    </style> 

,打造像this

被拉伸,其結果是this

分頻器沒有改變顏色和對話採取內容大小..

回答

-1

你可以使用主題來做到這一點。查看此question的接受答案。我認爲這對你有幫助。

最新通報

展開您的應用程序文件夾res和擴大values文件夾。然後在values文件夾中創建themes.xml文件。然後用下面的代碼替換themes.xml文件中的所有代碼。

<?xml version="1.0" encoding="utf-8"?> 
<resources xmlns:android="http://schemas.android.com/apk/res/android"> 

    <style name="MYTheme" parent="@android:style/Theme"> 

     <item name="android:divider">@drawable/dialog_divider</item> 

    </style> 

</resources> 

然後打開你的AndroidManifest.xml文件。並找到android:theme和replcae與android:theme="@style/MYTheme"

+0

當我這樣做,我得到這個錯誤:錯誤:錯誤:沒有資源發現在給定名稱匹配:ATTR「機器人:_DEFAULT_BASE_COLOR_1」。 – 2013-02-13 08:32:29

+0

您是否在資源中定義了_DEFAULT_BASE_COLOR_1? – Bishan 2013-02-13 08:46:19

+0

對不起,有什麼資源?我如何定義它? – 2013-02-13 09:04:50

1

這是我的解決方案來更改NumberPickers,TimePickers,DatePickers和TimePickerDialog中的分隔線顏色。對於DatePickerDialog可以調用DatePickerDialog.getDatePicker()

public class NumberPickerStylingUtils { 

private static final Drawable PICKER_DIVIDER_DRAWABLE = //Place your drawable here 

private NumberPickerStylingUtils() {} 

public static void applyStyling(TimePickerDialog timePickerDialog) { 
    try { 
     Field field = TimePickerDialog.class.getDeclaredField("mTimePicker"); 
     field.setAccessible(true); 
     applyStyling((TimePicker) field.get(timePickerDialog)); 
    } catch (NoSuchFieldException e) { 
     e.printStackTrace(); 
    } catch (IllegalAccessException e) { 
     e.printStackTrace(); 
    } 
} 

public static void applyStyling(TimePicker timePicker) { 
    try { 
     Field fields[] = TimePicker.class.getDeclaredFields(); 
     for (Field field : fields) { 
      if (field.getType().equals(NumberPicker.class)) { 
       field.setAccessible(true); 
       applyStyling((NumberPicker) field.get(timePicker)); 
      } 
     } 
    } catch (IllegalAccessException e) { 
     e.printStackTrace(); 
    } 
} 

public static void applyStyling(DatePicker datePicker) { 
    try { 
     Field fields[] = DatePicker.class.getDeclaredFields(); 
     for (Field field : fields) { 
      if (field.getType().equals(NumberPicker.class)) { 
       field.setAccessible(true); 
       applyStyling((NumberPicker) field.get(datePicker)); 
      } 
     } 
    } catch (IllegalAccessException e) { 
     e.printStackTrace(); 
    } 
} 

public static void applyStyling(NumberPicker numberPicker) { 
    try { 
     Field field = NumberPicker.class.getDeclaredField("mSelectionDivider"); 
     field.setAccessible(true); 
     field.set(numberPicker, PICKER_DIVIDER_DRAWABLE)); 
    } catch (NoSuchFieldException e) { 
     e.printStackTrace(); 
    } catch (IllegalAccessException e) { 
     e.printStackTrace(); 
    } 
} 

}

相關問題