android - 在 Android Spinner 中设置文本颜色

标签 android android-layout spinner android-spinner

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

if (_colorCodeSpinner.getSelectedView() != null) {
    ((TextView) _colorCodeSpinner.getSelectedView()).setTextColor(0xFFFFFFFF);
}

但这仅在所选 View 不为空(它处于方向更改)时才有效。

我无法相信没有设置文本颜色的简单解决方案。这似乎是你经常做的事情。与更改箭头的颜色相同,我目前通过

_colorCodeSpinner.getBackground().setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP);

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

Android spinner

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

编辑

澄清一下:我不是在寻找在运行时覆盖值的一小段代码(比如我在这个问题中发布的两个 fragment )。我正在寻找一种正确执行此操作的实际方法(例如在 XML 布局中或通过主题)。设置一次文本颜色属性,这样我就不必每次都更新它,例如选择一个项目。

最佳答案

这样做:

  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) {
      }
  });

关于android - 在 Android Spinner 中设置文本颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39247136/

相关文章:

java - 从自定义 ListView 元素中的 Spinner getSelectedItem

android - 如何重置android中微调器的选定项目?

angular - 在 Angular 的 http 订阅操作中使用 ngx-spinner

java - 为回收站 View 中的项目滑动菜单

java - 通过 HTTP 从 android 应用程序发送到 nodejs 服务器后,我的 JSON 看起来不同

android - 我可以制作只覆盖一半屏幕的Android应用程序吗

android - 如何使用按钮从 Fragment 重定向到 URL

android - 如何为 View 设置动画以隐藏在另一个 View 下方,然后从该 View 设置动画

android - Recyclerview 的最后一项为 "add"项

Android:从 View 传递触摸事件