Android 的 DatePicker、TimePicker或NumberPicker
布局文件加上这个就可以,去除日期选择器、时间选择器或数值选择器的可编辑状态。
android:descendantFocusability="blocksDescendants"
CalendarView项目
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:descendantFocusability="blocksDescendants"
android:orientation="vertical"
tools:context="com.example.googlenumberpicker.MainActivity" > <LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" > <LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical" > <NumberPicker
android:id="@+id/np_date"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout> <LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical" > <LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal" > <NumberPicker
android:id="@+id/np_hour"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1" /> <NumberPicker
android:id="@+id/np_minute"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1" >
</NumberPicker>
</LinearLayout>
</LinearLayout>
</LinearLayout> </LinearLayout>
layout_main.xml
import java.util.Calendar; import android.app.Activity;
import android.os.Bundle;
import android.widget.NumberPicker;
import android.widget.NumberPicker.Formatter;
import android.widget.NumberPicker.OnScrollListener;
import android.widget.NumberPicker.OnValueChangeListener; public class MainActivity extends Activity implements OnValueChangeListener, OnScrollListener, Formatter
{
int year;
int month;
int day;
int hour;
int minute;
String[] dates; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
hour = c.get(Calendar.HOUR);
minute = c.get(Calendar.MINUTE);
this.initDates();
this.init();
} private void initDates() {
Calendar c = Calendar.getInstance();
c.setFirstDayOfWeek(Calendar.SUNDAY);
c.set(year, 0, 1);
dates = new String[c.getActualMaximum(Calendar.DAY_OF_YEAR)];
for (int i = 0; i < dates.length; i++) {
dates[i] = this.format((c.get(Calendar.MONTH)+1)) + "-" + this.format(c.get(Calendar.DAY_OF_MONTH));
c.roll(Calendar.DAY_OF_YEAR, true);
}
} private void init() {
NumberPicker np_date = (NumberPicker) this.findViewById(R.id.np_date);
NumberPicker np_hour = (NumberPicker) this.findViewById(R.id.np_hour);
NumberPicker np_minute = (NumberPicker) this.findViewById(R.id.np_minute); np_date.setFormatter(this);
np_date.setOnScrollListener(this);
np_date.setOnValueChangedListener(this);
np_date.setDisplayedValues(dates);
np_date.setMaxValue(dates.length - 1);
np_date.setValue(Calendar.getInstance().get(Calendar.DAY_OF_YEAR)-1); np_hour.setFormatter(this);
np_hour.setOnScrollListener(this);
np_hour.setOnValueChangedListener(this);
np_hour.setMaxValue(23);
np_hour.setMinValue(0);
np_hour.setValue(hour); np_minute.setFormatter(this);
np_minute.setOnScrollListener(this);
np_minute.setOnValueChangedListener(this);
np_minute.setMaxValue(59);
np_minute.setMinValue(0);
np_minute.setValue(minute);
} @Override
public String format(int value) {
String tmpStr = String .valueOf(value);
if (value < 10) {
tmpStr = "0" + tmpStr;
}
return tmpStr;
} @Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
// Toast.makeText(MainActivity.this, oldVal + "变成" + newVal , 0).show();
} @Override
public void onScrollStateChange(NumberPicker view, int scrollState) {
/*switch (scrollState) {
case OnScrollListener.SCROLL_STATE_FLING:
Toast.makeText(MainActivity.this, "后续滑动..." , 0).show();
break;
case OnScrollListener.SCROLL_STATE_IDLE:
Toast.makeText(MainActivity.this, "不滑动" , 0).show();
break;
case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
Toast.makeText(MainActivity.this, "滑动中" , 0).show();
break; default:
break;
}*/
} }
MainActivity.java

Android日期对话框NumberPicker的用法教程 - Android移动开发技术文章_手机开发 - 红黑联盟
疑难杂症专解:Stack Overflow
Android 的 DatePicker、TimePicker或NumberPicker的更多相关文章
- Android中关闭DatePicker、TimePicker、NumberPicker的可编辑模式
DatePicker.TimePicker.NumberPicker这三个控件在使用的过程中,用户点击数字会弹出键盘,有时候会造成布局被挤压不好看,也有其他的需求. 我看了网上很多文章的解决办法都无效 ...
- Android 使用DatePicker以及TimePicker显示当前日期和时间
课程内容1.介绍DatePicker和TimePicker两种实现动态输入日期和事件的功能2.介绍DatePickerDialog和TimePickerDialog来年耕种实现动态输入日期和事件的对话 ...
- android datepicker timepicker简单用法
1.效果图 2. xml布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout x ...
- Android中DatePicker与TimePicker用法讲解(包括DatePickerDialog与TimePickerDialog)
实现效果:将DatePicker和TimePicker修改的日期和时间实时显示在程序标题栏上. 1.通过DatePicker和TimePicker来实现 布局为main.xml <?xml ve ...
- Android的DatePicker和TimePicker-android学习之旅(三十八)
DatePicker和TimePicker简介 DatePicker和TimePicker是从FrameLayout继承而来,他们都是比较简单的组件.时间改变时间分别添加OnDateChangeLis ...
- 重新想象 Windows 8.1 Store Apps (73) - 新增控件: DatePicker, TimePicker
[源码下载] 重新想象 Windows 8.1 Store Apps (73) - 新增控件: DatePicker, TimePicker 作者:webabcd 介绍重新想象 Windows 8.1 ...
- android之datepicker控件用法
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...
- 背水一战 Windows 10 (44) - 控件(日期类): CalendarView, DatePicker, TimePicker
[源码下载] 背水一战 Windows 10 (44) - 控件(日期类): CalendarView, DatePicker, TimePicker 作者:webabcd 介绍背水一战 Window ...
- Android中DatePicker日期选择器的使用和获取选择的年月日
场景 实现效果如下 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将布局改 ...
随机推荐
- 重读高程3: c2-3 script元素
1. 异步脚本一定会在页面的load事件前执行,但可能会在domC ontentLoaded事件触发之前或者之后执行.
- iOS进阶之多线程
多线程 注意:iOS关于UI的刷新和添加必须在主线程中操作! pthread的创建方法: pthread_t pthread; //第一个参数 线程指针 //第二个参数 线程的一些属性 //第三个参数 ...
- volatile关键字和mutable关键字
如果不用volatile关键字会如何?可能会造成一个后果就是:编译器发现你多次使用同一个变量的值,然后它可能会假设这个变量是不变的值,并且把这个变量的值放入寄存器中,方便下一次使用,提高存取速度. 一 ...
- SQL位运算符
十进制 170 转二进制为:0000 0000 1010 1010 十进制 75 转二进制为:0000 0000 0100 1011 1.&(位与) 上下运算,按照与的运算规则:0& ...
- 第10章 嵌入式Linux的调试技术
printk函数运行在内核空间,printf函数运行在用户空间.也就是说像Linux驱动这样的Linux内核程序只能使用printk函数输出调试信息.printk函数在控制台(也称终端)显示消息是通过 ...
- vs2012 检测到有潜在危险的 Request.Form 值
今天用vs2012写网站,其中要用到网页编辑器,调试时提示:检测到有潜在危险的 Request.Form 值随即上网搜索: 解决方法一:具体页面添加 ValidateRequest="fal ...
- 学习SVG系列(1):SVG基础
什么是SVG? 1.指可伸缩矢量图形 2.用来定义用于网络的基于矢量的图形 3.使用XML格式定义图形 4.图像在放大或改变尺寸的情况下其图形不会有所损失 5.万维网联盟的标准, 用于描述二维矢量图形 ...
- Android Studio安装插件GsonFormat
Android Studio菜单栏File > Settings > plugins' 这个是Android Studio搜索和安装插件的界面,下面直接上动图 : 安装结束后需要关闭重新启 ...
- nodejs入门 SSH服务器远程部署nodejs2
服务器安装nodejs昨天好像出了点问题 今天参考的链接是http://nodejs.cn/download/package-manager/#debian-and-ubuntu-based-linu ...
- C#动态添加属性
class DynamicInputParams: DynamicObject { Dictionary<string, object> property = new Dictionary ...