android - 如何更改 Android 微调器弹出窗口中所有项目的文本颜色?

标签 android spinner textcolor

我正在开发一款向用户展示两个图形对象的应用程序。每个对象都与相应的微调器相关联,用户可以从中选择少数属性之一。触摸一个微调器会停用另一个微调器(这是在 spinner.setEnabled 之外处理的。)

该 View 包含一个搜索栏,用户可以从中控制应用于最近选择的属性的值范围。

颜色是属性之一。随着搜索栏的移动,我可以更改弹出项的背景颜色。我需要将所有项目的文本颜色设置为黑色(浅背景色)和白色(所有深色)。

    if ( pos == object.COLOR_INDEX) {
             //change spinner Background and Text color
             spinner.setBackgroundColor(Colors.BACKGROUND[objectCurrent.getParams(pos)]);
             TextView v ; int ct ;
             for(int i=0; i<(ct=spinner.getChildCount()); ++i) {
                 v= (TextView)spinner.getChildAt(i);
                 v.setTextColor(Colors.FOREGROUND[objectCurrent.getParams(pos)]);
             }



             ColorDrawable drawable=(ColorDrawable) spinner.getBackground() ;
             spinner.setPopupBackgroundDrawable(drawable);
             spinner.setSelection(0); spinner.setSelection(pos);
    }

我还没有找到一种方法来做到这一点。循环通过 spinner.getChildAt(i) 仅影响当前显示的项目,而不影响弹出窗口中隐藏的项目。

我将不胜感激任何建议。

最佳答案

这显然可以解决问题:

    Resources res=getResources();
    final List<String> spinnerItems=new ArrayList<String>(Arrays.asList(res.getStringArray(R.array.spin_settings)));

    ArrayAdapter<String> aa=new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,spinnerItems){
        public View getDropDownView(int position, View convertView,
                                    ViewGroup parent) {
            View v = super.getDropDownView(position, convertView,
                    parent);

            ((TextView) v).setTextColor(Colors.FOREGROUND[obj.getParams(param.COLOR_INDEX)]);
            ((TextView) v).setBackgroundColor(Colors.BACKGROUND[obj.getParams(param.COLOR_INDEX)]);


            return v;
        }

    };

     aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);



    spinnerLeft.setAdapter(aa);
    spinnerRight.setAdapter(aa);

getDropDownView 事件似乎是为下拉列表中的每个项目引发的。

关于android - 如何更改 Android 微调器弹出窗口中所有项目的文本颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31225917/

相关文章:

Android微调器显示对象引用而不是字符串

android - 如何将微调项与数据连接

android - 如何控制 Android 1.5 中的选项卡行数

java - javafxports 项目使用哪种属性文件编码?

android - 监控 GPS 状态(如果用户使用通知栏关闭 GPS 则无法检查)

Android:如何访问默认文本颜色? (没有主题,只是标准的)

android - 在 Viewpager 中自定义 ListView 文本颜色不会根据主题更改

php - Android Httpget超时

java - 如何使用 spinner int 值以编程方式添加 View ?

android - 通知在 API 17 下可见,但在 API 13 下不可见