我已经使用范围日期选择器从谷歌材料与此库
implementation 'com.google.android.material:material:1.2.0-alpha02'
这是我的代码
MaterialDatePicker.Builder<Pair<Long, Long>> builder =
MaterialDatePicker.Builder.dateRangePicker();
CalendarConstraints.Builder constraintsBuilder = new CalendarConstraints.Builder();
builder.setCalendarConstraints(constraintsBuilder.build());
MaterialDatePicker<Pair<Long,Long>> picker = builder.build();
assert getFragmentManager() != null;
picker.show(getFragmentManager(), picker.toString());
我想自定义对话框选择器更改文本字段,使对话框不全屏等。我怎么能做所有这些修改
5条答案
按热度按时间gywdnpxw1#
关于全屏
范围选择器应覆盖整个屏幕(默认值为单个日期为对话框,范围为全屏)。但是,您可以在样式中更改此行为。
您可以使用**
setTheme
**方法应用主题叠加:**注意:至少需要
1.2.0-alpha01
版本。或者您也可以在应用主题中添加
materialCalendarFullscreenTheme
**属性。其中:
这里可以使用**
android:windowFullscreen
**属性覆盖该值:关于字符串
目前还没有一个方法来改变字符串。
现有的唯一方法是**
builder.setTitleText
更改标题。但是,您可以覆盖项目中的所有现有字符串,但此解决方法可以停止**以在下一版本中运行。例如:
在这里您可以找到
1.2.0-alpha02
中的物料日历所使用的all the strings。mi7gmzs62#
基本上,你应该玩风格。在你的AppTheme中添加一个
materialCalendarTheme
项,它继承了父项ThemeOverlay.MaterialComponents.MaterialCalendar
的自定义样式,然后更改样式。1.更改文本字段-调用
MaterialDatePicker.Builder
函数setTitleText()
1.使对话框不全屏-你不能改变它的日期范围选择器,文档说,它是全屏默认情况下
移动的日期范围选择器允许选择日期范围。它覆盖了整个屏幕。
以下是文档https://material.io/components/pickers
以下是我如何调整一些颜色来匹配我的主题:
ujv3wf0j3#
在全屏和对话框版本之间进行切换非常简单:
全屏:
对话框:
ulydmbyx4#
虽然发布的答案完全有效,但似乎没有必要全局设置
materialCalendarTheme
-您可以通过MaterialDatePicker.Builder
和setTheme(int themeResId)
方法设置它。以下是他们如何在Material Design Catalog应用程序中执行此操作的示例。resolveOrThrow辅助方法:
这样你的DatePicker对话框就不会是全屏的,而是一个普通的对话框。
46scxncf5#
postfixNotation给出的答案是正确的,但并不完全正确,因为他忘了提到该样式可用的包名称。我挠头了大约30分钟才发现,因为它不能直接在ridostyle...所以这是一个答案,如果这件事发生在别人身上,它会对所有人都有效。
在全屏和对话框版本之间进行切换非常简单:
全屏:
对话框: