Android:DatePicker对话框主题

时间:2019-02-28 03:39:16

标签: android

我正在做一个Android开发,对日期选择器对话框有疑问。

单击按钮后,将弹出一个日期选择器,用户应该可以选择日期。

代码已成功编译,当我单击按钮时,对话框弹出,如图1所示,但我希望日期选择器如图2所示。

请让我知道我必须在哪里更改代码。

下面是代码:

  public class MainActivity extends AppCompatActivity {
Button B1;
int day_x, month_x, year_x;
static  final int id=0;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    B1 = (Button)findViewById(R.id.button);
    B1.setOnClickListener(new View.OnClickListener()
    {
        @Override
        public void onClick(View v) {
            showDialog(id);
        }
    });
}
@Override
protected Dialog onCreateDialog(int id1)
{
    if (id1==id)
        return new DatePickerDialog(MainActivity.this,listener,year_x,month_x,day_x);
    return null;
}
protected DatePickerDialog.OnDateSetListener listener
        =new DatePickerDialog.OnDateSetListener()
{
    public void onDateSet(DatePicker view,int year,int month,int day)
    {
        year_x=year;
        month_x=month;
        day_x=day;
        Toast.makeText(MainActivity.this,Integer.toString(day_x)+":"+Integer.toString(month_x)+":"+
                Integer.toString(year_x),Toast.LENGTH_SHORT).show();
    }
     };
     }

image 1
image 2

3 个答案:

答案 0 :(得分:1)

您可以为此使用AlertDialog.THEME_HOLO_LIGHT主题

DatePickerDialog dpd = new DatePickerDialog(context, 
  AlertDialog.THEME_HOLO_LIGHT, listener, year, month, day);

dpd.show();

答案 1 :(得分:1)

您可以使用此方法,但不推荐使用 android.R.style.Theme_Holo_Light_Dialog_MinWidth

public  void showDatePicker(Context context, DatePickerDialog.OnDateSetListener listener) {
    Calendar cal = Calendar.getInstance();
    int year = cal.get(Calendar.YEAR);
    int month = cal.get(Calendar.MONTH);
    int day = cal.get(Calendar.DAY_OF_MONTH);

    DatePickerDialog dialog = new DatePickerDialog(context, android.R.style.Theme_Holo_Light_Dialog_MinWidth, listener, year, month, day);
    dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
    dialog.show();
}

答案 2 :(得分:0)

这不是错误,DatePickerDialog默认显示Lollipop之上的Android版本的日历,并显示Lollipop之前的版本的微调器

如果要对所有版本使用传统的微调器,可以在here中引用多个解决方案