我当前自定义UI的方法是使用常用的Android DatePicker,然后使用DatePicketDialog.getDatePicker()来获取内部组件,并自定义它。
现在结果位于https://dl.dropboxusercontent.com/u/3286004/Screen%20Shot%202557-08-29%20at%202.52.21%20AM.png
的图片中问题是......我想将DONE按钮上方的黑线自定义为另一种颜色。 你能建议我如何把这个线组件拿出来,所以我可以改变它。
提前谢谢你:D
答案 0 :(得分:2)
这绝对是可能的,实际上你可以用它做任何你想做的事。实际上,其中一个选项是使用样式和主题,但在4.x中不起作用。更简单地说,正确或简单的方法是使用视图本身,如下所示:
// we need this listener since only here all views are really drawn and accessible
yourDialog.setOnShowListener(new DialogInterface.OnShowListener() {
private boolean areButtonsFixed;
@Override
public void onShow(DialogInterface dialog) {
if (areButtonsFixed)
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);
areButtonsFixed = true;
}
这个(prelast line)将删除按钮上方的分隔符。如果您希望自定义它,请执行以下操作:
((LinearLayout) btnPositive.getParent().getParent()).setDividerDrawable(R.drawable.yer_drawable);
答案 1 :(得分:1)
一种方法是使用另一个主题。这个主题是Holo我认为,所以你不能改变颜色。
我认为您可以使用自定义布局创建对话框。 如果您使用自定义布局,则可以更改颜色。
或者,您应该使用其他主题,或创建自己的主题。
修改强>
是的,也是在运行时间。 在布局上使用的许多东西都被锁定,比如颜色,特别是在小部件上(例如searchView)
答案 2 :(得分:0)
在默认对话框中不可能,此行具有系统颜色。您应该将此对话框转换为活动,然后您可以在那里更改颜色。