2014-08-29 3 views
1

내 UI를 사용자 화하는 나의 현재 메소드는 일반적인 안드로이드 DatePicker를 사용하고 DatePicketDialog.getDatePicker()를 사용하여 내부 컴포넌트를 가져 와서 사용자 정의합니다.안드로이드 DatePicker의 버튼 사용자 정의

지금 결과는 내가 다른 색상으로 완료 버튼 위의 검은 선을 사용자 정의 할 ... 질문은 https://dl.dropboxusercontent.com/u/3286004/Screen%20Shot%202557-08-29%20at%202.52.21%20AM.png

에있는 이미지입니다. 라인 구성 요소를 어떻게 가져올 수 있는지 제안 해 주시면 변경할 수 있습니다.

은 사전에 감사합니다 : D

답변

1

한 가지 방법은 다른 테마를 사용하는 것입니다. 이 주제는 Holo라고 생각합니다. 따라서 색을 바꿀 수 없습니다.

사용자 정의 레이아웃으로 대화 상자를 만들 수 있다고 생각합니다. 사용자 정의 레이아웃을 사용한 경우 색상을 변경할 수 있습니다.

또는 다른 테마를 사용하거나 나만의 테마를 만들어야합니다.

너무 실행시

네 EDIT. 레이아웃에서 사용하는 많은 것들이 색상처럼 잠겨 있습니다 (특히 searchView).

+0

프로그래밍 방식으로 런타임에 수행 할 수 있더라도 확인하십시오. 그 구성 요소에 액세스하는 방법을 찾을 수 없다고 생각합니다. 어쨌든, 나는 하루에 테마를 만들고 결과를 확인하려고합니다. 감사합니다. D – Kanit

+0

@Kanit는 괜찮 으면이 대답을 수락합니다;) – Sidd

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);