【问题标题】:Fullscreen DialogFragment with DatePicker in AndroidAndroid中带有DatePicker的全屏DialogFragment
【发布时间】:2016-10-26 16:23:20
【问题描述】:

我正在 android 中开发一个显示日期选择器的应用程序。问题是当我尝试获取全屏日期选择器对话框片段时。我得到了您可以在下图中看到的屏幕。有没有办法获得更大的日期选择器?提前致谢!

https://i.stack.imgur.com/gSj4F.png

这是我的代码:

DatePickerFragment.java

public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {

@Override
public Dialog onCreateDialog(Bundle savedInstanceState){
    Dialog dialog = getDialog();
    if (dialog != null)
    {
        int width = ViewGroup.LayoutParams.MATCH_PARENT;
        int height = ViewGroup.LayoutParams.MATCH_PARENT;
        dialog.getWindow().setLayout(width, height);
    }
    //Use the current date as the default date in the date picker
    final Calendar c = Calendar.getInstance();
    int year = c.get(Calendar.YEAR);
    int month = c.get(Calendar.MONTH);
    int day = c.get(Calendar.DAY_OF_MONTH);
    return new DatePickerDialog(getActivity(), this, year, month, day);
}
@Override
public void onStart()
{
    super.onStart();
    Dialog dialog = getDialog();
    if (dialog != null)
    {
        //Fullscreen dialog
        int width = ViewGroup.LayoutParams.MATCH_PARENT;
        int height = ViewGroup.LayoutParams.MATCH_PARENT;
        dialog.getWindow().setLayout(width, height);
    }
}
public void onDateSet(DatePicker view, int year, int month, int day) {
    //Do something with the date chosen by the user
    TextView tvFecha = (TextView) getActivity().findViewById(R.id.tvFecha);
    month = month+1;
    String formattedMonth = "" + month;
    String formattedDay = "" + day;

    if(month < 10){

        formattedMonth = "0" + month;
    }
    if(day < 10){

        formattedDay = "0" + day;
    }
    String stringOfDate = formattedDay + "-" + formattedMonth + "-" + year;
    tvFecha.setText(stringOfDate);
}
}

【问题讨论】:

    标签: android datepicker android-dialogfragment


    【解决方案1】:

    您可以在对话框中使用样式

    <style name="DialogTheme" parent="Theme.AppCompat.Light">
            <item name="colorAccent">@color/primary</item>
            <item name="android:windowIsFloating">true</item>
    </style>
    

    【讨论】:

      【解决方案2】:

      将以下样式添加到您的 styles.xml

      <style name="FullScreenDialog" parent="Theme.AppCompat.Light">
          <item name="android:windowFrame">@null</item>
      </style>
      

      onCreateDialog() 应该是这样的:

      @Override
      public Dialog onCreateDialog(Bundle savedInstanceState) {
          // calling getDialog() here does not make much sense
      
          final Calendar c = Calendar.getInstance();
          int year = c.get(Calendar.YEAR);
          int month = c.get(Calendar.MONTH);
          int day = c.get(Calendar.DAY_OF_MONTH);
      
          // pass the style defined above to the constructor of DatePickerDialog
          return new DatePickerDialog(getActivity(),
              R.style.FullScreenDialog,
              this,
              year, month, day);
      }
      

      结果:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-08
        • 1970-01-01
        相关资源
        最近更新 更多