国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

android指定DatePickerDialog樣式并不顯示年的實(shí)現(xiàn)代碼

2019-12-12 05:46:44
字體:
供稿:網(wǎng)友

有很多地方要用到DatePickerDialog。但有時(shí)項(xiàng)目用到的主題樣式是很丑的樣式,顯示出來的真丑。


而我們真正想要的樣式是這樣的。


這個(gè)就漂亮多了。而且很多的時(shí)候都不需要顯示“年”,下面看通過指定主題來顯示自己想要的樣式,并且通過反射機(jī)制來隱藏“年”,而且可以舉一反三,對(duì)這上面的東西做任務(wù)的修改。

 private void showDatePickerDialog() {    Calendar calendar = Calendar.getInstance();    calendar.setTime(new Date());    int year = calendar.get(Calendar.YEAR);    final int month = calendar.get(Calendar.MONTH);    int day = calendar.get(Calendar.DAY_OF_MONTH);    DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), AlertDialog.THEME_HOLO_LIGHT, onDateSetListener, year, month, day);    datePickerDialog.setCancelable(true);    DatePicker dp = datePickerDialog.getDatePicker();    //設(shè)置當(dāng)天為最小值    dp.setMinDate(calendar.getTimeInMillis());    //設(shè)置最大值是7天    calendar.set(Calendar.DAY_OF_MONTH, day + 6);    dp.setMaxDate(calendar.getTimeInMillis());    try {      //獲取指定的字段      Field field = dp.getClass().getDeclaredField("mYearSpinner");      //解封裝      field.setAccessible(true);      //獲取當(dāng)前實(shí)例的值      NumberPicker np = ((NumberPicker) field.get(dp));      np.setVisibility(View.GONE);    } catch (NoSuchFieldException e) {      e.printStackTrace();    } catch (IllegalAccessException e) {      e.printStackTrace();    }    datePickerDialog.show();  }

在實(shí)例化DatePickerDialog的時(shí)候,第二個(gè)參數(shù)指定了主題為THEME_HOLO_LIGHT就是想要的樣式,而且有一個(gè)很好玩的地方,你可以傳任何類型為int的值,來看看你手機(jī)支持哪些亂七八糟的主題,當(dāng)然這只是玩下,還是正規(guī)點(diǎn)寫上這個(gè)指定主題。

try{}catch(){}里面開始使用反射來獲取“年”的布局,因?yàn)樵创a里年的這個(gè)字段使用了private修飾,而且沒有g(shù)et方法提供,所以要用getDeclareField()來獲取這個(gè)Field.然后解封裝,否則也是獲取不到的,也就是setAccessible(true),意思就是可訪問了,這個(gè)時(shí)候獲取到的還不是當(dāng)前實(shí)例的值,只是得到了這個(gè)類里面的一個(gè)字段信息,最后一句,filed.get(Object)就是獲取了當(dāng)前實(shí)例所擁有的這個(gè)字段值,當(dāng)然就是顯示的這個(gè)“年”了,就可以對(duì)這個(gè)進(jìn)行操作了,而我只需要隱藏就可以了。有網(wǎng)上看了有些說通過布局來一層層獲取,這種方法可讀性不高,而且不同的版本改動(dòng)而已的可能性很大,這樣就獲取不到這個(gè)“年”了,相對(duì)來說,改動(dòng)這個(gè)字段名的可能性應(yīng)該會(huì)小些。

結(jié)束,這只是提供一種思路,可能還有更好的辦法,大神勿噴!

以上這篇android指定DatePickerDialog樣式并不顯示年的實(shí)現(xiàn)代碼就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 紫金县| 那曲县| 花垣县| 仙游县| 五指山市| 玉龙| 宣城市| 青海省| 内丘县| 贵港市| 花垣县| 靖宇县| 出国| 江孜县| 洛隆县| 金沙县| 谷城县| 浙江省| 富川| 昌江| 宁安市| 江口县| 冕宁县| 永吉县| 芜湖县| 龙南县| 云浮市| 瓮安县| 萨嘎县| 安乡县| 古蔺县| 东安县| 浦江县| 瑞金市| 清徐县| 上思县| 罗江县| 汕尾市| 年辖:市辖区| 琼中| 垫江县|