You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何隐藏DatePicker的日期?XML及代码实现仅显示年月的方法

如何让Android DatePicker仅显示月份和年份?

你当前的XML配置已经设置了android:calendarViewShown="false"android:datePickerMode="spinner",这已经把日历视图隐藏了,但默认的spinner模式还是会显示日期滚轮。要只保留年月,咱们可以通过代码找到日期对应的滚轮并隐藏它,下面给你两种常见语言的实现示例:

核心思路

原生的Spinner模式DatePicker内部是由三个NumberPicker(分别对应年、月、日)组成的,我们只需要找到代表“日”的那个NumberPicker,把它设置为隐藏即可。

Java 代码示例

// 获取你的DatePicker实例
DatePicker datePicker = findViewById(R.id.dpMyDatePicker);
// 获取DatePicker的子容器(Spinner模式下的根布局)
ViewGroup rootLayout = (ViewGroup) datePicker.getChildAt(0);
// 确认子视图数量为3(年、月、日三个滚轮)
if (rootLayout.getChildCount() == 3) {
    // 索引为2的就是日期滚轮(0=年,1=月,2=日)
    View dayPicker = rootLayout.getChildAt(2);
    dayPicker.setVisibility(View.GONE);
}

Kotlin 代码示例

val datePicker = findViewById<DatePicker>(R.id.dpMyDatePicker)
val rootLayout = datePicker.getChildAt(0) as ViewGroup
if (rootLayout.childCount == 3) {
    // 隐藏日期滚轮
    rootLayout.getChildAt(2).visibility = View.GONE
}

注意事项

  • 这种方法依赖原生DatePicker的视图结构,部分定制ROM或者Android版本可能会有差异,如果上面的代码不生效,可以尝试遍历所有子View来查找NumberPicker,判断其对应的字段来定位日期滚轮。
  • 如果追求更稳定的效果,也可以考虑使用第三方的年月选择器控件,但如果不想引入额外依赖,上面的简单实现完全够用。

内容的提问来源于stack exchange,提问作者Fabián Romo

火山引擎 最新活动