栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

通过反射修改TimePicker

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

通过反射修改TimePicker

private void getTime(){
		mTimePicker.setDescendantFocusability(TimePicker.FOCUS_BLOCK_DESCENDANTS);  //设置点击事件不弹键盘
        Resources resources = Resources.getSystem();
        int hour = resources.getIdentifier("hour", "id", "android");
        int min = resources.getIdentifier("minute", "id", "android");
        NumberPicker mHourNumberPicker = (NumberPicker)mTimePicker.findViewById(hour);
        NumberPicker mMinNumberPicker = (NumberPicker)mTimePicker.findViewById(min);
        mHourNumberPicker.setBackgroundColor(getResources().getColor(R.color.color)); //设置时间条的背景颜色为透明
        mMinNumberPicker.setBackgroundColor(getResources().getColor(R.color.color));
    }

设置分割线的:

    private void setNumberPickerDivider(NumberPicker numberPicker) {
        NumberPicker picker = numberPicker;
        Field[] pickerFields = NumberPicker.class.getDeclaredFields();
        for (Field pf : pickerFields) {
            if (pf.getName().equals("mSelectionDivider")) {  //设置颜色
                pf.setAccessible(true);
                ColorDrawable colorDrawable = new ColorDrawable(
                        ContextCompat.getColor(this, R.color.colorAccent)); //选择自己喜欢的颜色
                try {
                    pf.set(numberPicker, colorDrawable);
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            }
            if (pf.getName().equals("mSelectionDividerHeight")) {   //设置高度
                pf.setAccessible(true);
                try {
                    int result = 3;  //要设置的高度
                    pf.set(picker, result);
                } catch (Exception e) {
                    e.printStackTrace();
                }
                break;
            }
            picker.invalidate();
        }
    }

隐藏冒号:

    private void setTime(){
        ViewGroup view = (ViewGroup) mTimePicker.getChildAt(0);//获取子view(TimePicker)
        ViewGroup view2 = (ViewGroup) view.getChildAt(0);//获取TimePicker的第0的子view  时间部分
        view2.getChildAt(1).setVisibility(View.GONE);
    }

完整代码:

import android.content.res.Resources;
import android.graphics.drawable.ColorDrawable;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.NumberPicker;
import android.widget.TimePicker;

import java.lang.reflect.Field;

public class MainActivity extends AppCompatActivity {
private TimePicker mTimePicker;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mTimePicker = (TimePicker)findViewById(R.id.lala);
    mTimePicker.setDescendantFocusability(TimePicker.FOCUS_BLOCK_DESCENDANTS);  //设置点击事件不弹键盘
    getTime();
    setTime();
}
private void getTime(){
    Resources resources = Resources.getSystem();
    int hour = resources.getIdentifier("hour", "id", "android");
    int min = resources.getIdentifier("minute", "id", "android");
    NumberPicker mHourNumberPicker = (NumberPicker)mTimePicker.findViewById(hour);
    NumberPicker mMinNumberPicker = (NumberPicker)mTimePicker.findViewById(min);
    mHourNumberPicker.setBackgroundColor(getResources().getColor(R.color.color)); //设置时间条的背景颜色为透明
    mMinNumberPicker.setBackgroundColor(getResources().getColor(R.color.color));
    setNumberPickerDivider(mHourNumberPicker);
}
private void setTime(){
    ViewGroup view = (ViewGroup) mTimePicker.getChildAt(0);
    ViewGroup view2 = (ViewGroup) view.getChildAt(0);
    view2.getChildAt(1).setVisibility(View.GONE);
}

private void setNumberPickerDivider(NumberPicker numberPicker) {
    NumberPicker picker = numberPicker;
    Field[] pickerFields = NumberPicker.class.getDeclaredFields();
    for (Field pf : pickerFields) {
        if (pf.getName().equals("mSelectionDivider")) {  //设置颜色
            pf.setAccessible(true);
            ColorDrawable colorDrawable = new ColorDrawable(
                    ContextCompat.getColor(this, R.color.colorAccent)); //选择自己喜欢的颜色
            try {
                pf.set(numberPicker, colorDrawable);
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
        if (pf.getName().equals("mSelectionDividerHeight")) {   //设置高度
            pf.setAccessible(true);
            try {
                int result = 3;  //要设置的高度
                pf.set(picker, result);
            } catch (Exception e) {
                e.printStackTrace();
            }
            break;
        }
        picker.invalidate();
    }
}

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/582150.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号