2016-05-26 51 views
0

使用android datepicker时,我想始终显示旧的日期月份微调而不是新的日历视图?我怎样才能做到这一点?Android日期选择器 - 总是显示日期月份的微调器布局而不是日历视图

我想这对于运行任何Android版本的所有设备: enter image description here 和不想如下界面:

enter image description here

+0

如何通过编程或xml将日期选择器添加到您的应用程序? – Dhiraj

+1

[在API 21中以编程方式从DatePicker中隐藏日历视图]的可能重复(http://stackoverflow.com/questions/27709668/hide-calenderview-from-datepicker-programatically-in-api-21) –

回答

8

我使用过这个答复https://stackoverflow.com/a/31610267/5700434彻底解决问题。

主要使用:

DatePickerDialog dialog = new DatePickerDialog(getActivity(),android.R.style.Theme_Holo_Light_Dialog_MinWidth, this, year, month, day); 
     dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 

全码:

import android.app.DatePickerDialog; 
import android.app.Dialog; 
import android.graphics.Color; 
import android.graphics.drawable.ColorDrawable; 
import android.os.Bundle; 
import android.support.v4.app.DialogFragment; 
import android.widget.DatePicker; 

import java.util.Calendar; 


public class DatePickerFragment extends DialogFragment 
     implements DatePickerDialog.OnDateSetListener { 

    private Calendar calendar; 
    private Calendar maxCalendar; 
    private Calendar minCalendar; 
    private DatePickerDialog.OnDateSetListener onDateSetListener; 

    private static final String TAG = DatePickerFragment.class.getSimpleName(); 

    public void setup(Calendar calendar, DatePickerDialog.OnDateSetListener onDateSetListener){ 
     this.calendar = calendar; 
     this.onDateSetListener = onDateSetListener; 
    } 

    public void setup(Calendar calendar, Calendar maxCalendar, DatePickerDialog.OnDateSetListener onDateSetListener){ 
     this.calendar = calendar; 
     this.maxCalendar = maxCalendar; 
     this.onDateSetListener = onDateSetListener; 
    } 

    public void setup(Calendar calendar, Calendar maxCalendar, Calendar minCalendar){ 
     this.calendar = calendar; 
     this.maxCalendar = maxCalendar; 
     this.minCalendar = minCalendar; 
    } 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 

     int year = calendar.get(Calendar.YEAR); 
     int month = calendar.get(Calendar.MONTH); 
     int day = calendar.get(Calendar.DAY_OF_MONTH); 

     DatePickerDialog dialog = new DatePickerDialog(getActivity(),android.R.style.Theme_Holo_Light_Dialog_MinWidth, this, year, month, day); 
     dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 

     if(minCalendar!=null){ 
      dialog.getDatePicker().setMinDate(minCalendar.getTimeInMillis()); 
     } 

     if(maxCalendar != null){ 
      dialog.getDatePicker().setMaxDate(maxCalendar.getTimeInMillis()); 
     } 

     return dialog; 
    } 

    public void onDateSet(DatePicker view, int year, int month, int day) { 
     if(onDateSetListener != null){ 
      onDateSetListener.onDateSet(view, year, month, day); 
     }else{ 
      LogUtils.w(TAG, "onDateSetListener callback is not initialized."); 
     } 
    } 
} 
1

有可用于Android日期选择器很多图书馆(如:exmple1example2example3或你可以使用默认日期选择器This日期选择器可能是你正在寻找的那个

0
DatePickerDialog dialog = new 
DatePickerDialog(getActivity(),AlertDialog.THEME_HOLO_LIGHT, this, year, month, day); 

这在Android中的所有版本的完美。从4.4到6.0 进行了测试,虽然它已被弃用,但它支持得很好。

相关问题