Android 中NumberPicker,DatePicker與DatePickerDialog中分割顏色的修改實(shí)例代碼
Android 中NumberPicker,DatePicker與DatePickerDialog中分割顏色的修改實(shí)例代碼
前言: 開發(fā)中,為了應(yīng)用整體美觀,需要保持控件的色調(diào)和主題色保持一致,
例如:NumberPicker、DatePicker和DatePickerDialog的分割線顏色
一、NumberPicker的分割線顏色
我把對(duì)NumberPicker分割線顏色的方法寫在一個(gè)工具類中,便于全局調(diào)用,代碼如下:
public static void setNumberPickerDividerColor(Context context, NumberPicker numberPicker) { NumberPicker picker = numberPicker; Field[] pickerFields = NumberPicker.class.getDeclaredFields(); for (Field pf : pickerFields) { if (pf.getName().equals("mSelectionDivider")) { pf.setAccessible(true); try { //設(shè)置分割線的顏色值 pf.set(picker, new ColorDrawable(context.getResources().getColor(R.color.theme_pink))); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (Resources.NotFoundException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } break; } } }
二、DatePicker的分割線顏色
查看DataPicker的源碼可以看到,DatePacker也是NumberPicker實(shí)現(xiàn)的,所以主要思想,還是修改NumberPicker分割線的顏色,代碼如下:
public static void setDatePickerDividerColor(Context context, DatePicker datePicker){ // 獲取 mSpinners LinearLayout llFirst = (LinearLayout) datePicker.getChildAt(0); // 獲取 NumberPicker LinearLayout mSpinners = (LinearLayout) llFirst.getChildAt(0); for (int i = 0; i < mSpinners.getChildCount(); i++) { NumberPicker picker = (NumberPicker) mSpinners.getChildAt(i); Field[] pickerFields = NumberPicker.class.getDeclaredFields(); for (Field pf : pickerFields) { if (pf.getName().equals("mSelectionDivider")) { pf.setAccessible(true); try { pf.set(picker, new ColorDrawable(context.getResources().getColor(R.color.theme_pink))); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (Resources.NotFoundException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } break; } } } }
二、DatePickerDialog的分割線顏色
實(shí)現(xiàn)思路:拿到Dialog中DatePicker就可以改變分割先的顏色,主要代碼如下:
DatePickerDialog datePickerDialog = new DatePickerDialog(mContext, 0, listener, year, month, day); datePickerDialog.setTitle("選擇年月"); datePickerDialog.show(); DatePicker datePicker = datePickerDialog.getDatePickerStart(); //獲取DatePicker CommonUtil.setDatePickerDividerColor(mContext, datePicker); //設(shè)置分割線顏色 /*修改按鈕顏色這個(gè)必須在show或者create方法后面*/ Button commitBtn = datePickerDialog.getButton(DialogInterface.BUTTON_POSITIVE); //確認(rèn)按鈕 commitBtn.setTextColor(Color.parseColor("#e8615e"));
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
淺析KJFrameForAndroid框架如何高效加載Bitmap
Bitmap是Android系統(tǒng)中的圖像處理的最重要類之一。用它可以獲取圖像文件信息,進(jìn)行圖像剪切、旋轉(zhuǎn)、縮放等操作,并可以指定格式保存圖像文件。本文主要是從KJFrameForAndroid框架中分析高效加載Bitmap的方法2014-07-07Android運(yùn)用BroadcastReceiver實(shí)現(xiàn)強(qiáng)制下線
本篇文章主要介紹了Android運(yùn)用BroadcastReceiver實(shí)現(xiàn)強(qiáng)制下線,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07Flutter數(shù)字切換動(dòng)畫實(shí)現(xiàn)示例詳解
這篇文章主要為大家介紹了Flutter數(shù)字切換動(dòng)畫實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08Android MarkTipsView文字標(biāo)識(shí)控件使用方法
這篇文章主要為大家詳細(xì)介紹了Android MarkTipsView文字標(biāo)識(shí)控件的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-045分鐘學(xué)會(huì)Android設(shè)計(jì)模式之策略模式Strategy Pattern教程
這篇文章主要為大家介紹了5分鐘學(xué)會(huì)Android設(shè)計(jì)模式之策略模式Strategy Pattern教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03Android PopupWindow 點(diǎn)擊外面取消實(shí)現(xiàn)代碼
這篇文章主要介紹了Android PopupWindow 點(diǎn)擊外面取消實(shí)現(xiàn)代碼,本文直接給出核心實(shí)現(xiàn)代碼,代碼中包含注釋,需要的朋友可以參考下2015-04-04Android開發(fā)之ListView、GridView 詳解及示例代碼
本文主要介紹Android開發(fā)之ListView、GridView,這里整理了相關(guān)資料及簡(jiǎn)單示例代碼,幫助大家學(xué)習(xí)參考,有需要的小伙伴可以參考下2016-08-08android Gallery組件實(shí)現(xiàn)的iPhone圖片滑動(dòng)效果實(shí)例
這篇文章主要介紹了android Gallery組件實(shí)現(xiàn)的iPhone圖片滑動(dòng)效果實(shí)例,即相冊(cè)內(nèi)的圖片實(shí)現(xiàn)可左右滑動(dòng)的效果,需要的朋友可以參考下2014-07-07