DatePickerShowDialog替換系統(tǒng)的DatePickerDialog

前言

在使用系統(tǒng)的DatePickerDialog時(shí),你會(huì)發(fā)現(xiàn),在不同的SDK版本上,顯示的效果是不同,這是系統(tǒng)做的兼容性,如果想設(shè)置為統(tǒng)一的顯示效果,會(huì)有版本限制。這里我們來(lái)使用DatePickerShowDialog來(lái)替換系統(tǒng)的DatePickerDialog。

DatePickerDialog的使用

DatePickerDialog的使用非常簡(jiǎn)單,只需要幾行代碼就可以實(shí)現(xiàn),如下:

private void showDateDialog() {
    Calendar calendar = Calendar.getInstance();
    int year = calendar.get(Calendar.YEAR);
    int month = calendar.get(Calendar.MONTH);
    int day = calendar.get(Calendar.DAY_OF_MONTH);
    new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            Log.e("=====", "===year==" + year + "==month==" + monthOfYear + "==day==" + dayOfMonth);
        }
    }, year, month, day).show();
}

這里傳入年月日,是為了初始化默認(rèn)為當(dāng)前時(shí)間。

注意:這里有一個(gè)坑,就是獲取到的年月日中,月份是與你選中的月份小于1的,例如,你選中的是7月,但是獲得的是6,因此需要手動(dòng)處理一下。

關(guān)于現(xiàn)實(shí)的樣式問(wèn)題,可以參考這篇文章:
Android DatePickerDialog和TimePickerDialog顯示樣式
在這篇文章中介紹了一些樣式的設(shè)置,但是會(huì)出現(xiàn)下面的情況:

異常.png

大概的意思就是不能這樣使用,但是是可以運(yùn)行的,我們點(diǎn)擊進(jìn)去看一下會(huì)發(fā)現(xiàn):

deprecated.png

這就是問(wèn)題所在。
因此在這里才有了使用DatePickerShowDialog替換DatePickerDialog的想法。

實(shí)現(xiàn)

因?yàn)楫a(chǎn)品要求顯示的樣式為:

image.png

因此對(duì)其進(jìn)行總體的設(shè)置。DatePickerShowDialog實(shí)現(xiàn)是和DatePickerDialog的實(shí)現(xiàn)方式一樣的,甚至可以說(shuō)是DatePickerDialog的復(fù)制品,用最簡(jiǎn)單粗暴的方式將DatePickerDialog里面的代碼全部復(fù)制過(guò)來(lái),去掉報(bào)警的地方,就形成了現(xiàn)在的DatePickerShowDialog。

區(qū)別:區(qū)別就是兩個(gè)類對(duì)應(yīng)不同的layout文件

<- DatePickerShowDialog layout ->
<?xml version="1.0" encoding="utf-8"?>
<DatePicker xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/datePicker"
    android:layout_gravity="center_horizontal"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:spinnersShown="true"
    android:calendarViewShown="false"
    android:datePickerMode="spinner"/>

翻看源碼,你會(huì)發(fā)現(xiàn)其中的差別就只有最后一句。其他的部分同源碼部分。使用方式同系統(tǒng)控件一致。

寫(xiě)在最后

這種方式可以進(jìn)行修改相關(guān)的樣式問(wèn)題,如直接使用第一張圖片的方式設(shè)置也是可以的,雖報(bào)錯(cuò)但是可以實(shí)現(xiàn)這個(gè)效果,使用替換布局的方式,也會(huì)提醒a(bǔ)ndroid:datePickerMode="spinner"只能在5.0以上可以使用。因此看如何取舍。當(dāng)然也可以自定義一個(gè)Dialog來(lái)實(shí)現(xiàn),這個(gè)要看讀者自己決定。之所以寫(xiě)這篇文章一方面記錄一下DatePickerDialog的使用方法,另一方面是記錄一下這種修改方式。不喜,勿噴啊?。?!

DatePickerShowDialog

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,711評(píng)論 19 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,365評(píng)論 25 708
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,756評(píng)論 4 61
  • 什么叫做投資自己的頭腦、自我成長(zhǎng)呢?又為什么終身學(xué)習(xí)呢? 第一、我們必須掌握正確的概念,才能學(xué)會(huì)更多和更新的知識(shí),...
    早知今日閱讀 250評(píng)論 0 1
  • 1、火箭軍首個(gè)院士工作站在某軍工廠掛牌啟動(dòng); 2、環(huán)保部:散煤治理未完成地區(qū)繼續(xù)沿用燃煤取暖; 3、民政部擬規(guī)定:...
    筱小麗閱讀 109評(píng)論 0 1

友情鏈接更多精彩內(nèi)容