当前位置: 首页 > 知识库问答 >
问题:

Android RadioButton文本颜色选择器

闾丘霖
2023-03-14

我有一个单选按钮的textColor选择器,如下所示:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true" android:color="#fff"/>
    <item android:state_focused="true" android:color="#f00"/>
    <item android:state_pressed="true" android:color="#0f0"/>
    <item android:state_focused="false" android:state_pressed="false" android:color="#00f"/>
</selector>

我希望选中的单选按钮的颜色与其他按钮不同。

然而,所有的单选按钮都有蓝色文本(使用Android:state_focused=“false”Android:state_pressed=“false”),即使是选中的那一个。

我做错了什么?


共有3个答案

岳意蕴
2023-03-14

@GrantAmos提供的答案是完美且有效的。如果您想通过XML创建文本颜色选择器,请使用以下代码。

android:textColor=“@color/textview_选择器”

但是,如果您想以编程方式设置选择器,请使用以下代码-

radioButton.setTextColor(ContextCompat.getColorStateList(getContext(), R.color.textview_selector));

希望这能节省别人的时间。

魏毅
2023-03-14

根据Android的说法。https://developer.android.com/guide/topics/resources/color-list-resource.html. https://developer.android.com/reference/android/content/res/ColorStateList.html

您必须在'res'目录中创建一个名为'color'的文件夹,并创建一个名为radiobuttonstate的新文件。比如xml,它看起来像这样。

 <?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_focused="true"
    android:color="YOUR COLOR" />

   <item
    android:state_pressed="true"
    android:state_enabled="false"
    android:color="YOUR COLOR" />

    <item android:color="YOUR COLOR"
    android:state_checked="true"/>

    <item
    android:state_enabled="false"
    android:color="YOUR COLOR" />

   <item android:color="YOUR COLOR" />
</selector>

然后在你的单选按钮中,在android:textColor属性中定义你之前定义的颜色列表。

  <RadioButton
                    android:id="@+id/radio_H"
                    android:layout_width="30dp"
                    android:layout_height="30dp"
                    android:text="@string/string_example"
                    android:textColor="@color/radiobuttonstate"
                    android:textAlignment="center" />
赵献
2023-03-14

看起来您只是使用了错误的选择器。文档对选择的描述如下:

在每次状态更改期间,从上到下遍历状态列表,并使用与当前状态匹配的第一个项目——选择不是基于“最佳匹配”,而只是满足状态最低标准的第一个项目。

源链接

因此,为了:

  1. 选中时,单选按钮使用选中的状态,因此选中的状态永远不会为真

如果你想看到不同的状态,试试这些:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true" android:color="#0f0"/>
    <item android:state_checked="true" android:color="#fff"/>
    <item android:color="#00f"/>
</selector>

我已经测试了上面的内容,可以看到所有颜色都被恰当地表达出来。

 类似资料:
  • 关于选择颜色 可以通过使用 Illustrator 中的各种工具、面板和对话框为图稿选择颜色。如何选择颜色取决于图稿的要求。例如,如果希望使用公司认可的特定颜色,则可以从公司认可的色板库中选择颜色。如果希望颜色与其他图稿中的颜色匹配,则可以使用吸管或拾色器并输入准确的颜色值。 可以使用下列任一功能来选择颜色: 色板面板和色板库面板提供不同的颜色和颜色组。可以从现有的色板和库中选择颜色,也可以创建自

  • 我该怎么做? 这是我用来更改文本颜色的: 我设置了<代码> 有什么想法吗?

  • 颜色字段存储一个字符串作为其值,并存储一个字符串作为其文本。 它的值是格式为#rrggbb的字符串,而其文本也可以是格式为#rgb的字符串。 颜色字段 打开编辑器的颜色字段 压缩的颜色字段 新建 { "type": "example_colour", "message0": "colour: %1", "args0": [ { "type": "field_colo

  • 用于颜色选择,支持多种格式。 基础用法 使用 v-model 与 Vue 实例中的一个变量进行双向绑定,绑定的变量需要是字符串类型。 <div class="block"> <span class="demonstration">有默认值</span> <el-color-picker v-model="color1"></el-color-picker> </div> <div clas

  • ColorPicker 颜色选择器 用于颜色选择,支持多种格式。 基础用法 :::demo 通过value属性控制当前显示的颜色。 render() { const color1 = '#20a0ff'; const color2 = null; return ( <div> <div className="block"> <span classNa

  • ColorPicker 颜色选择器 用于颜色选择,支持多种格式。 基础用法 使用 v-model 与 Vue 实例中的一个变量进行双向绑定,绑定的变量需要是字符串类型。 <div class="block"> <span class="demonstration">有默认值</span> <el-color-picker v-model="color1"></el-color-picker