2014-08-29 72 views
1

我目前的自定義我的UI的方法是使用通常的android DatePicker,然後使用DatePicketDialog.getDatePicker()獲取內部組件,並對其進行自定義。自定義按鈕的Android DatePicker

現在的結果是圖像在https://dl.dropboxusercontent.com/u/3286004/Screen%20Shot%202557-08-29%20at%202.52.21%20AM.png

問題是...我想自定義完成按鈕以另一種顏色以上的黑線。 你能否建議我怎樣才能得到這一行組件,所以我可以改變它。

謝謝您提前:D

回答

1

一種方法是使用另一個主題。這個主題是我認爲的全息,所以你不能改變顏色。

我認爲你可以創建自定義佈局的對話框。 如果您使用自定義佈局,則可以更改顏色。

或者,你應該使用另一個主題,或創建自己的主題。

編輯

是的,在運行時間太長。 在你的佈局上使用的許多東西被鎖定,如顏色,特別是在窗口小部件上(例如searchView)

+0

只是爲了確認,即使我可以在編程運行時做到這一點? 我覺得我無法找到如何訪問該組件。 無論如何,我會嘗試做一個主題到一天,並確認結果,非常感謝:D – Kanit 2014-08-29 15:35:46

+0

@Kanit接受這​​個答案,如果沒關係;) – Sidd 2015-04-14 14:46:13

0

在默認對話框中,這條線是不可能的,這條線有系統顏色。您應該將此對話框轉換爲活動,然後您可以在那裏更改顏色。

0

這絕對有可能,實際上你可以隨心所欲地做任何事情。真的,其中一個選擇是使用風格和主題,但在4.x中不起作用。可以說,適當或簡單的方法是使用視圖本身,如下所示:

 // we need this listener since only here all views are really drawn and accessible 
     yourDialog.setOnShowListener(new DialogInterface.OnShowListener() { 
      @Override 
      public void onShow(DialogInterface dialog) { 
       if (isButtonsFixed) 
        return; 

       // both buttons - you could search for only positive button or whatever button your dialog has 
       final Button btnPositive = getButton(DatePickerDialog.BUTTON_POSITIVE); 
       final Button btnNegative = getButton(DatePickerDialog.BUTTON_NEGATIVE); 
       final Button btnNeutral = getButton(DatePickerDialog.BUTTON_NEUTRAL); 

       // buttons layout parameters, change it into material style (gravity right) 
       final LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) btnPositive.getLayoutParams(); 
       lp.weight = 0; // was 1 to fill 50% horizontally 

       // positive button, set your own label 
       btnPositive.setText(R.string.dialog_ok_label); 
       // set text color and size     
btnPositive.setTextColor(ResHelper.getColor(R.color.blue_bright)); 
       btnPositive.setTextSize(TypedValue.COMPLEX_UNIT_PX, ResHelper.getDimensPx(R.dimen.text_size_14)); 

       btnPositive.setLayoutParams(lp); 

       // divider above buttons 
       ((LinearLayout) btnPositive.getParent().getParent()).setShowDividers(LinearLayout.SHOW_DIVIDER_NONE); 
} 

這(最後一行)將刪除按鈕上方的分隔符。如果你想定製它,而不是像下面這樣:

((LinearLayout) btnPositive.getParent().getParent()).setDividerDrawable(R.drawable.yer_drawable);