Activity
从AppCompatActivity
继承了Fragment。
在此Fragment
中,我显示DatePickerDialog
以选择日期。
Activity
中声明为manifest.xml
的
<activity name=".SampleActivity" android:configChanges="keyboardHidden|orientation|screenLayout|screenSize" />
现在。
我想在DatePickerDialog
内显示Fragment
,因此我使用代码创建了自定义DatePickertFragment
:
public class DatePickerFragment extends AppCompatDialogFragment{
// (...)
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
DatePickerDialog dialog = new DatePickerDialog(getActivity(), this, year, month, day);
return dialog;
}
// (...)
}
并在片段
中执行show()方法 pickerFragment.show(getChildFragmentManager(), null);
我在onClick()
方法中运行show picker代码。 DatePicker
正确显示。
现在是问题。
Dialog
在纵向屏幕方向正确显示,但当我将屏幕旋转到横向模式时,对话框似乎会在左右尺寸上切割。
我查了一下,我认为Dialog
选择器没有改变屏幕旋转的布局方向。
截图如下
1.纵向,正确对话
答案 0 :(得分:2)
使用onConfigurationChanged(Configuration newConfig)
处理日历裁剪问题签出,我的代码与screenSize一起工作100%。 startDateDpd是“日期选择器”对话框,startDateTxt-单击此日期选择器对话框时将打开
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if(startDateDpd!=null)
if(startDateDpd.isVisible()){
startDateDpd.dismiss();
startDateTxt.performClick();
}
}
答案 1 :(得分:2)
根据Sumedh Ulhe的回答,我发现DatePicker / TimePicker将在创建时间加载布局。
您可以看到rdd = sc.textFile("path")
rddSplit = rdd.map(lambda l: l.split(delimiter))
rddKey = rddSplit.map(lambda l: l[keyIndex], l)
rddJoin = rddKey.join(rddKey)
android-26\android\widget\TimePicker.java
和mDelegate = new TimePickerClockDelegate(
android-26\android\widget\TimePickerClockDelegate.java
有两个R.layout.time_picker_material:final int layoutResourceId = a.getResourceId(R.styleable.TimePicker_internalLayout,
R.layout.time_picker_material);
和android-26\data\res\layout\time_picker_material.xml
因此,当选择器已经打开时,我将重新创建选择器
android-26\data\res\layout-land\time_picker_material.xml
答案 2 :(得分:0)
使用
android:configChanges="keyboard|orientation|screenLayout"
或管理方法:
onConfigurationChanged(Configuration newConfig)
答案 3 :(得分:-1)
我遇到此问题,但使用TimePicker。我将它放在FrameLayout中并且它已被修复。