activity_date.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".DateActivity"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:layout_margin="10dp"android:orientation="horizontal"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:gravity="center"android:text="日期:" /><EditTextandroid:id="@+id/et_day"android:layout_width="wrap_content"android:layout_height="wrap_content"android:enabled="false"android:gravity="center"android:textColor="@color/black" /><ImageViewandroid:id="@+id/iv_day"android:layout_width="wrap_content"android:layout_height="wrap_content"android:gravity="center"android:src="@mipmap/ic_launcher" /></LinearLayout>
</LinearLayout>

DateActivity

package com.example.myapplication;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;
import android.widget.EditText;import java.text.SimpleDateFormat;
import java.util.Date;public class DateActivity extends AppCompatActivity {private EditText  etDay;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_date);//年月日etDay = findViewById(R.id.et_day);etDay.setText(new SimpleDateFormat("yyyy-MM-dd").format(new Date()));findViewById(R.id.iv_day).setOnClickListener(new OnPickDateClickListener(this, etDay));}
}

OnPickDateClickListener

package com.example.myapplication;import android.app.DatePickerDialog;
import android.content.Context;
import android.view.View;
import android.widget.DatePicker;
import android.widget.EditText;import java.util.Calendar;public class OnPickDateClickListener implements View.OnClickListener {private Context context;private EditText editText;public OnPickDateClickListener(Context context, EditText editText) {this.context = context;this.editText = editText;final Calendar c = Calendar.getInstance();int year = c.get(Calendar.YEAR);int monthOfYear = c.get(Calendar.MONTH);int dayOfMonth = c.get(Calendar.DAY_OF_MONTH);setTextDate(year, monthOfYear, dayOfMonth);}@Overridepublic void onClick(View v) {final Calendar c = Calendar.getInstance();int year = c.get(Calendar.YEAR);int monthOfYear = c.get(Calendar.MONTH);int dayOfMonth = c.get(Calendar.DAY_OF_MONTH);String dateStr = editText.getText().toString().trim();int monthOfYeartemp = monthOfYear + 1;String monthOfYeartempStr = String.valueOf(monthOfYeartemp);if (monthOfYeartempStr.length() == 1) {monthOfYeartempStr = "0" + monthOfYeartempStr;}String dayOfMonthtempStr = String.valueOf(dayOfMonth);if (dayOfMonthtempStr.length() == 1) {dayOfMonthtempStr = "0" + dayOfMonth;}String dateStrCur = year + "-" + monthOfYeartempStr + "-" + dayOfMonthtempStr;if (dateStr.equals(dateStrCur) || null == dateStr) {setTextDate(year, monthOfYear, dayOfMonth);new DatePickerDialog(context, mDateSetListener, year, monthOfYear, dayOfMonth).show();} else {int year1 = Integer.parseInt(dateStr.substring(0, 4));String monthStr = dateStr.substring(5, 7).toString().trim();int monthOfYear1 = -1;if (monthStr.startsWith("0")) {monthStr = monthStr.substring(1, 2);monthOfYear1 = Integer.parseInt(monthStr);monthOfYear1 = monthOfYear1 - 1;} else {monthOfYear1 = Integer.parseInt(monthStr);monthOfYear1 = monthOfYear1 - 1;}String dayStr = dateStr.substring(8, 10);int dayOfMonth1 = -1;if (dayStr.startsWith("0")) {dayStr = dayStr.substring(1, 2);dayOfMonth1 = Integer.parseInt(dayStr);} else {dayOfMonth1 = Integer.parseInt(dayStr);}new DatePickerDialog(context, mDateSetListener, year1, monthOfYear1, dayOfMonth1).show();}}private final DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() {@Overridepublic void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {setTextDate(year, monthOfYear, dayOfMonth);}};private void setTextDate(int year, int monthOfYear, int dayOfMonth) {editText.setText(new StringBuilder().append(year).append("-").append((monthOfYear + 1) < 10 ? "0" + (monthOfYear + 1) : (monthOfYear + 1)).append("-").append((dayOfMonth < 10) ? "0" + dayOfMonth : dayOfMonth));}}

android 选择年月日控件(DatePick简单好用)相关推荐

  1. android 自定义listview控件,一个简单又完整的自定义ListView

    ListView 一.简单列表 1.在activity_main中添加控件ListView xmlns:tools="http://schemas.android.com/tools&quo ...

  2. 【按住你的心】——Android开发CheckBoxRadioButton控件的简单使用

    Android的控件很多,我们从最常用的一些控件学起,今天我们学习CheckBox和RadioButton. 首先,我们要在main.xml文件中添加控件: <?xml version=&quo ...

  3. listview控件Android,Android中ListView控件的简单使用

    文章引自郭霖<第一行代码> ListView允许用户通过手指上下滑动的方式将屏幕外的数据滚动到屏幕内,同时屏幕上原有的数据则会滚动出屏幕 使用LIstView控件 1 在布局文件中引入Li ...

  4. Android自定义时间控件不可选择未来时间

    本文出自:http://blog.csdn.net/dt235201314/article/details/78718066 Android自定义时间控件选择开始时间到结束时间 Android自定义时 ...

  5. android 日程安排view,RecyclerView 列表控件中简单实现时间线

    时间 时间,时间,时间啊:走慢一点吧- 看见很多软件中都有时间线的东西,貌似天气啊,旅游啊什么的最多了:具体实现方式很多,在本篇文章中讲解一种自定义View封装的方式. 效果 先来看看效果. 分析 软 ...

  6. Android 控件 RecyclerView简单使用

    Android 控件 RecyclerView简单使用 1.导依赖库 implementation 'com.android.support:recyclerview-v7:27.1.1'implem ...

  7. Android动态加载XML文件及控件来简单实现QQ好友印象的功能

    在android开发中,我们常常会遇到界面布局控件不确定的情况.由于某些功能的原因或者为了体现某些app的特色等这些原因会导致我们在实现界面布局时需要动态去加载一些控件,那么下面就来介绍一下如何用动态 ...

  8. Android 城市选择万能控件

    Android 城市选择万能控件 Android 城市选择万能控件,选择城市,选择汽车品牌等等,支持按照a-z.# 排序等的选择控件,废话不多说直接上效果图: (开的Android模拟器录得gif,有 ...

  9. 【转】Android M新控件之AppBarLayout,NavigationView,CoordinatorLayout,CollapsingToolbarLayout的使用...

    Android M新控件之AppBarLayout,NavigationView,CoordinatorLayout,CollapsingToolbarLayout的使用 分类: Android UI ...

最新文章

  1. 2018-08-12 长大
  2. Merge、Rebase
  3. 【Java】线程通信的例子:用两个线程打印 1-100;生产者消费者问题
  4. js获取精确宽度/高度(带小数位像素)
  5. 学前儿童语言教育模拟试卷c卷,学前儿童语言教育模拟试卷参考答案.doc
  6. DotNetNuke(DNN) 中查询所有管理员的SQL语句
  7. 开启本地git权限_git的使用,有这篇文章就够了
  8. 【BZOJ4011】【HNOI2015】落忆枫音 拓扑图DP,
  9. 大话西游,唐僧与悟空合伙创业,股权几何?
  10. Windows10系统出现休眠后电脑屏幕黑屏无法唤醒解决办法
  11. 海思HI35xx平台软件开发快速入门之H264解码实例
  12. 我也有拖延症,你呢?
  13. codeforces Mafia
  14. GC9A01-TFT屏幕驱动(整理有stm32/51单片机/arduino等驱动代码)
  15. linux-scp上传下载
  16. “无代码”时代,离我们还有多远?
  17. 数据库开发及ADO.NET(6)——新增 - Inert into Table(col,col2...)values(data1,data2...)
  18. 云之幻哔哩哔哩uwp_云之幻哔哩哔哩uwp
  19. 【渝粤教育】国家开放大学2018年秋季 2328T仓储与配送管理 参考试题
  20. 用Clojure写的阅读器“美味爱读”,欢迎大家试用

热门文章

  1. 深度人工神经网络模拟单个皮层神经元6
  2. 事务的4种隔离级别,3大问题,脏读幻读不可重复读
  3. 算法分析:锦标赛问题 分治算法
  4. 冲刺阶段最容易踩的几个坑,快来看看你中枪了吗?
  5. Django 'utf-8' codec can't decode byte 0xc4 in position 90: invalid continuation byte
  6. 程序员的故事 010 上网行为管理系统
  7. .\code.axf: Error: L6218E: Undefined symbol __aeabi_memcpy:取消勾选Dont Search Standard Libraries
  8. Layui的数据表格排序:浅谈
  9. 多线程爬虫获取平板电脑信息
  10. bootstrap table export插件导出pdf格式文件中文乱码问题解决办法