在Android Spinner中设置文本颜色

Dan*_*iel 5 android spinner android-layout android-spinner

我想更改Android中微调器中显示的所选项目的颜色(目标API等级为16级).我已尝试在SO上发布了几个解决方案,包括为我的微调器项创建自定义布局,并使用ColorStateList作为自定义布局的文本颜色属性,但无济于事.微调器显示在半透明背景上 - 因此项目的自定义布局不起作用,因为它为微调器添加了颜色.目前我的黑客解决方案是

if (_colorCodeSpinner.getSelectedView() != null) {
    ((TextView) _colorCodeSpinner.getSelectedView()).setTextColor(0xFFFFFFFF);
}
Run Code Online (Sandbox Code Playgroud)

但这仅在所选视图不为空(它在方向更改时)时有效.

我无法相信没有简单的解决方案来设置文本颜色.这似乎是你经常做的事情.同样改变箭头的颜色,我目前正在做的

_colorCodeSpinner.getBackground().setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP);
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?在旋转器上更改颜色的推荐方法是什么?

Android微调器

如图所示,微调器中显示的所选项目的文本颜色为黑色,但我想将其更改为白色.

编辑

澄清一下:我不是在寻找一些在运行时覆盖值的小代码(比如我在这个问题中发布的两个片段).我正在寻找一种实际的方法来正确地做到这一点(比如XML布局或主题).要设置文本颜色属性一次,所以每次我选择一个项目时都不需要更新它.

Hug*_*yez 6

做这个 :

  spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
      @Override
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
          ((TextView) parent.getChildAt(0)).setTextColor(Color.WHITE); /* if you want your item to be white */
      }

      @Override
      public void onNothingSelected(AdapterView<?> parent) {
      }
  });
Run Code Online (Sandbox Code Playgroud)