Android時(shí)間(TimePicker)日期(DatePicker)控件聯(lián)動(dòng)

Android原生控件中時(shí)間日期是分開(kāi)的,但是有時(shí)我們的實(shí)際工作中可能是需要兩個(gè)聯(lián)動(dòng)選擇的,這時(shí)就需要我們自己將兩個(gè)控件組合起來(lái)封裝了一個(gè)工具類.

image.png
image.png

一. 創(chuàng)建工具類
關(guān)于控件主題以原生為主,大家可以修改themeId進(jìn)行對(duì)應(yīng)修改,上圖就分別是主題2和主題4.綁定控件直接將TextView類型修改為對(duì)應(yīng)控件對(duì)象就行.

package com.myllcn.specialdeal;

import android.annotation.SuppressLint;
import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.content.Context;
import android.os.Build;
import android.support.annotation.RequiresApi;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.TimePicker;

import java.util.Calendar;


/**
 * @author  keiferju
 * @time    2020/4/21 8:50 AM
 * @title 時(shí)間日期選擇器
 * @desc
 *
 */

public  class  DateTimePicker implements DatePickerDialog.OnDateSetListener,TimePickerDialog.OnTimeSetListener{

    private static  Context context;
    private static DatePickerDialog datePickerDialog;
    private static TimePickerDialog pickerDialog;
    private static Calendar calendar;
    private static TextView editText;  // 綁定控件
    private String dt = "";
    Integer themeId = 2;   // 主題ID
    @SuppressLint("ResourceType")
    @RequiresApi(api = Build.VERSION_CODES.N)
    public void init(Context context1, TextView editText1)
    {
        calendar=Calendar.getInstance();
        editText=editText1;
        context=context1;
       datePickerDialog=new DatePickerDialog(context,themeId,this, calendar.get(Calendar.YEAR), calendar
               .get(Calendar.MONTH), calendar
               .get(Calendar.DAY_OF_MONTH));
       datePickerDialog.show();
    }

    @Override
    public void onDateSet(DatePicker view, int year, int month, int day) {
        dt = String.valueOf(new StringBuilder()
                .append(year)
                .append("-")
                .append((month + 1) < 10 ? "0"
                        + (month + 1) : (month + 1))
                .append("-")
                .append((day < 10) ? "0" + day : day));
//        editText.setText( );
        initTimePicker(context);
    }

    public void initTimePicker(Context context1){
        context=context1;
        pickerDialog=new TimePickerDialog(context,themeId,this,8,00,true);
        pickerDialog.show();
    }

    @Override
    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
        String s=(hourOfDay<10?"0"+hourOfDay:hourOfDay)+":"+(minute<10?"0"+minute:minute)+ ":"+ "00";
        dt = dt +" "+s;
        editText.setText(dt);
    }
}

二. 使用:

    // 1.創(chuàng)建工具類對(duì)象
    final DateTimePicker dateTimePicker = new DateTimePicker();
    //2.引用對(duì)象的init方法
    dateTimePicker.init(context, textView);
  • context: 上下文對(duì)象
  • textview: 我們需要綁定textview對(duì)象,如果想要適應(yīng)editText,那么需要將第一步工具類里面的數(shù)據(jù)類型也換成edittext.

三. 如果還需要獲取事件日期選擇完的事件,那么可以采用addTextChangedListener監(jiān)聽(tīng).

textView.addTextChangedListener(new TextWatcher() {
    @Override
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {

    }

    @Override
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        
    }

    @Override
    public void afterTextChanged(Editable s) {
        
    }
});

不足之處,歡迎訪問(wèn)DLLCN的學(xué)習(xí)筆記進(jìn)行批評(píng)與討論,一起成長(zhǎng),一起學(xué)習(xí).

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市茉稠,隨后出現(xiàn)的幾起案子削解,更是在濱河造成了極大的恐慌,老刑警劉巖灵嫌,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件壹罚,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡寿羞,警方通過(guò)查閱死者的電腦和手機(jī)猖凛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)绪穆,“玉大人辨泳,你說(shuō)我怎么就攤上這事【猎海” “怎么了菠红?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)难菌。 經(jīng)常有香客問(wèn)我试溯,道長(zhǎng),這世上最難降的妖魔是什么扔傅? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任耍共,我火速辦了婚禮烫饼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘试读。我一直安慰自己杠纵,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布钩骇。 她就那樣靜靜地躺著比藻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪倘屹。 梳的紋絲不亂的頭發(fā)上银亲,一...
    開(kāi)封第一講書(shū)人閱讀 51,482評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音纽匙,去河邊找鬼务蝠。 笑死,一個(gè)胖子當(dāng)著我的面吹牛烛缔,可吹牛的內(nèi)容都是我干的馏段。 我是一名探鬼主播,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼践瓷,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼院喜!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起晕翠,我...
    開(kāi)封第一講書(shū)人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤喷舀,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后淋肾,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體硫麻,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年巫员,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了庶香。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡简识,死狀恐怖赶掖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情七扰,我是刑警寧澤奢赂,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站颈走,受9級(jí)特大地震影響膳灶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一轧钓、第九天 我趴在偏房一處隱蔽的房頂上張望序厉。 院中可真熱鬧,春花似錦毕箍、人聲如沸弛房。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)文捶。三九已至,卻和暖如春媒咳,著一層夾襖步出監(jiān)牢的瞬間粹排,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工涩澡, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留顽耳,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓妙同,卻偏偏與公主長(zhǎng)得像斧抱,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子渐溶,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354