布局文件加上这个就可以,去除日期选择器、时间选择器或数值选择器的可编辑状态。

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的更多相关文章

  1. Android中关闭DatePicker、TimePicker、NumberPicker的可编辑模式

    DatePicker.TimePicker.NumberPicker这三个控件在使用的过程中,用户点击数字会弹出键盘,有时候会造成布局被挤压不好看,也有其他的需求. 我看了网上很多文章的解决办法都无效 ...

  2. Android 使用DatePicker以及TimePicker显示当前日期和时间

    课程内容1.介绍DatePicker和TimePicker两种实现动态输入日期和事件的功能2.介绍DatePickerDialog和TimePickerDialog来年耕种实现动态输入日期和事件的对话 ...

  3. android datepicker timepicker简单用法

    1.效果图 2. xml布局文件 <?xml version="1.0" encoding="utf-8"?> <LinearLayout x ...

  4. Android中DatePicker与TimePicker用法讲解(包括DatePickerDialog与TimePickerDialog)

    实现效果:将DatePicker和TimePicker修改的日期和时间实时显示在程序标题栏上. 1.通过DatePicker和TimePicker来实现 布局为main.xml <?xml ve ...

  5. Android的DatePicker和TimePicker-android学习之旅(三十八)

    DatePicker和TimePicker简介 DatePicker和TimePicker是从FrameLayout继承而来,他们都是比较简单的组件.时间改变时间分别添加OnDateChangeLis ...

  6. 重新想象 Windows 8.1 Store Apps (73) - 新增控件: DatePicker, TimePicker

    [源码下载] 重新想象 Windows 8.1 Store Apps (73) - 新增控件: DatePicker, TimePicker 作者:webabcd 介绍重新想象 Windows 8.1 ...

  7. android之datepicker控件用法

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  8. 背水一战 Windows 10 (44) - 控件(日期类): CalendarView, DatePicker, TimePicker

    [源码下载] 背水一战 Windows 10 (44) - 控件(日期类): CalendarView, DatePicker, TimePicker 作者:webabcd 介绍背水一战 Window ...

  9. Android中DatePicker日期选择器的使用和获取选择的年月日

    场景 实现效果如下 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将布局改 ...

随机推荐

  1. tomcat8的配置

    本文章只适合初入javaweb的新人. 点击tomcat8的bin目录下的startup.bat,启动tomcat.在浏览器中输入http://localhost:8080  打开项目管理页,点击Ma ...

  2. Github Atom 1.12.0-beta3 发布

    Github Atom 1.12.0-beta3 发布了,Atom 是 Github 专门为程序员推出的一个跨平台文本编辑器.具有简洁和直观的图形用户界面,并有很多有趣的特点:支持CSS,HTML,J ...

  3. 悲惨记忆。。QImage之 pixel() && setPixel()参数不要给反了。。。

    QImage repairImg(width, height, QImage::Format_Mono); ; row < height; row++) { // uchar* ucRow = ...

  4. VMware10 安装centos6.7 设置NAT模式

    最近刚开始学Linux运维.我看的书是<跟阿铭学Linux>,视频教程里面使用NAT模式手动分配IP可以成功ping通网关,但是我照着视频一步一步操作却一直不成功,不知道是什么原因,昨天弄 ...

  5. cocos2d-x 3.2 创建新项目问题

    cocos2d-x 3.2 执行cocos2d-x\tools\cocos2d-console\console下的cocos2d.py,输入相应的参数即可创建一个新的项目,具体参数网上介绍一大堆,就不 ...

  6. 【three.js详解之一】入门篇

    [three.js详解之一]入门篇   开场白 webGL可以让我们在canvas上实现3D效果.而three.js是一款webGL框架,由于其易用性被广泛应用.如果你要学习webGL,抛弃那些复杂的 ...

  7. 第一章:Android系统移植与驱动开发概述

    Android是基于Linux内核的,与Linux内核没有太大的区别,只是增加了一些自己独有的驱动,随着Android发布版本的不断升级,他所使用的Linux内核也在不断升级,以适应新的安卓版本,为他 ...

  8. xamarin.forms 版本自动更新(针对android)

    1.首先同过url地址下载文件,这里必须要启用单独一个下载线程 new Thread(run).Start(); 通过url下载的方法 public void run()        {       ...

  9. Socket通信代码(原理)

    1.运行环境:NetBeans IDE 6.0.1 2.说明:先运行服务器端,再运行客户端. 3.服务器端代码: 新建java类Test import java.net.*; import java. ...

  10. GUI

    容器:1.JWindow 2.JFrame 3.JDialogo 4.JApplet 边界布局管理: 布局方式:把整个容器划分为五个部分:东西南北中,南北要贯通,中间最大(不仅是范围,权利也最大), ...