Android 中NumberPicker,DatePicker与DatePickerDialog中分割颜色的修改实例代码

 更新时间:2017年03月02日 14:54:40   投稿:lqh  
这篇文章主要介绍了Android 中NumberPicker,DatePicker与DatePickerDialog中分割颜色的修改实例代码的相关资料,这里提供实例代码,需要的朋友可以参考下

Android 中NumberPicker,DatePicker与DatePickerDialog中分割颜色的修改实例代码

前言: 开发中,为了应用整体美观,需要保持控件的色调和主题色保持一致,

例如:NumberPicker、DatePicker和DatePickerDialog的分割线颜色

一、NumberPicker的分割线颜色

我把对NumberPicker分割线颜色的方法写在一个工具类中,便于全局调用,代码如下:

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 {
          //设置分割线的颜色值
          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实现的,所以主要思想,还是修改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的分割线颜色

实现思路:拿到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); //设置分割线颜色
    /*修改按钮颜色这个必须在show或者create方法后面*/
    Button commitBtn = datePickerDialog.getButton(DialogInterface.BUTTON_POSITIVE); //确认按钮
    commitBtn.setTextColor(Color.parseColor("#e8615e"));

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • Android入门之计时器Chronometer的使用教程

    Android入门之计时器Chronometer的使用教程

    Chronometer是一个简单的定时器,你可以给它一个开始时间,并以此定时。本文将利用个简单的示例为大家讲解一下它的使用,感兴趣的小伙伴可以尝试一下
    2022-11-11
  • Android Studio设置或修改Android SDK路径方法

    Android Studio设置或修改Android SDK路径方法

    在本篇文章中小编给大家整理了关于Android Studio设置或修改Android SDK路径方法和相关知识点,需要的朋友们学习下。
    2019-04-04
  • Android System fastboot 介绍和使用教程

    Android System fastboot 介绍和使用教程

    Fastboot是Android快速升级的一种方法,Fastboot的协议fastboot_protocol.txt在源码目录./bootable/bootloader/legacy下可以找到,本文给大家介绍Android System fastboot 介绍和使用教程,感兴趣的朋友一起看看吧
    2024-01-01
  • Android中自定义控件的declare-styleable属性重用方案

    Android中自定义控件的declare-styleable属性重用方案

    这篇文章主要介绍了Android中自定义控件的declare-styleable属性重用方案,本文给出了一个终极重用解决方案,需要的朋友可以参考下
    2015-01-01
  • 一些比较实用的 Android adb 命令分享

    一些比较实用的 Android adb 命令分享

    这篇文章主要介绍了一些比较实用的 Android adb 命令分享,本文讲解了查看设备、安装应用、卸载一个应用、启动一个页面、进入设备的shell界面等内容,需要的朋友可以参考下
    2015-02-02
  • 详解Android自定义控件属性

    详解Android自定义控件属性

    这篇文章主要为大家详细介绍了Android自定义控件属性,需要的朋友可以参考下
    2016-02-02
  • Android ProgressBar进度条使用详解

    Android ProgressBar进度条使用详解

    ProgressBar进度条,分为旋转进度条和水平进度条,进度条的样式根据需要自定义,这篇文章主要介绍了Android ProgressBar进度条使用方法,感兴趣的小伙伴们可以参考一下
    2016-02-02
  • Flutter中mixin的使用详解

    Flutter中mixin的使用详解

    这篇文章主要介绍了Flutter中mixin的使用,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2020-05-05
  • Android 实现永久性开启adb 的root权限

    Android 实现永久性开启adb 的root权限

    这篇文章主要介绍了Android 实现永久性开启adb 的root权限,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • AndroidManifest.xml配置文件解析

    AndroidManifest.xml配置文件解析

    AndroidManifest.xml配置文件对于Android应用开发来说是非常重要的基础知识,本文将详细介绍,需要了解的朋友可以参考下
    2012-12-12

最新评论