android - [Android]NumberPicker 选中项改变颜色

标签 android

是否可以更改 numberpicker 中所选项目的颜色,以便每次出现新的中心子 TextView 时将其颜色更改为我喜欢的任何颜色我没有发现任何样式或 API 公开与此相关?

最佳答案

enter image description here我尝试了很多答案,但所有答案都设置了整数的颜色。

我想出了如何只为选定的数字更改颜色r。在您的 NumberPicker 中设置 OnTouchListener。

numberPicker.setOnTouchListener(new OnTouchListener() {
                    @Override
                    public boolean onTouch(final View v, MotionEvent event) {
                        currentTouchAction = event.getAction();
                        if (currentTouchAction == MotionEvent.ACTION_UP) {
                            new Handler().postDelayed(new Runnable() {
                                @Override
                                public void run() {
                                    if (currentTouchAction == MotionEvent.ACTION_UP) {
                                        setSelectedTextColor((NumberPicker)v, selectedColorRes);
                                    }
                                }
                            }, 300);
                        }
                        return false;
                    }
                });

和下面的代码用于更改所选数字的颜色。您可能必须使用“performClick()” 动态应用颜色。

如果你这样做,选择器会立即停止。所以这就是为什么我把 postDelayed(300) 放在上面。用户可能会多次拖动数字选择器来选择利润数字。如果放在postDelay()上面等几毫秒,就可以顺利滚动了。

public void setSelectedTextColor(NumberPicker np, int colorRes) {
    final int count = np.getChildCount();
    for(int i = 0; i < count; i++){
        View child = np.getChildAt(i);
        if(child instanceof EditText){
            try{
                Field selectorWheelPaintField = np.getClass().getDeclaredField("mSelectorWheelPaint");
                selectorWheelPaintField.setAccessible(true);
                ((EditText) child).setTextColor(mContext.getResources().getColor(colorRes));
                np.performClick();
            }
            catch(NoSuchFieldException e){
            }
            catch(IllegalArgumentException e){
            }
        }
    }
}

关于android - [Android]NumberPicker 选中项改变颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34336374/

相关文章:

android - 一个列表 Activity 中的两个自定义 ListView

android - 如何在Android中获取手机名称

android - 使用计时器定期调用电话?

android - 布局错误 :106 width:0 ellipsizedWidth:0

android - 在服务中录制视频

android - 有没有一种方法可以在运行时查询给定设备恰好正在使用哪个布局文件夹?

android - 适用于 MonoDroid 的 Google map 解决方案

android - Android 上的 Scala : java. lang.NoSuchMethodError : java. lang.String.isEmpty

android - OpenGL ES 2.0 : Unable to perform simple rotation

android - 更改 AChartEngine 中的图例大小