【问题标题】:Android RadioButton textColor selectorAndroid RadioButton textColor 选择器
【发布时间】:2014-03-23 14:23:11
【问题描述】:

我有一个 textColorRadioButton 选择器,如下所示:

<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>

我希望选中的RadioButton 的颜色与其他颜色不同。

但是,所有RadioButtons 都有蓝色文本(使用 android:state_focused="false" android:state_pressed="false"),即使是被选中的那个。

我做错了什么?

【问题讨论】:

    标签: android radio-button


    【解决方案1】:

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

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

    Source link

    所以,按顺序:

    1. state_selected 永远不会为真,因为 RadioButtons 使用 state_checked 检查时。
    2. state_focused 永远不会被调用,因为 RadioButton 永远不会收到输入焦点。
    3. state_pressed 应该可以正常工作。 当您按住手指时,您看不到出现的文字 绿色?
    4. state_focused false 和 state_pressed false 最终成为 默认为蓝色。

    如果您想查看不同的状态,请尝试以下方法:

    <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>
    

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

    【讨论】:

    • 将此选择器设置为 RadioButton 的背景会起作用吗?我无法设置为 RadioButton 背景。
    • 是的,将其设置为您的背景应该可以。如果上述内容在“drawable/radiobutton_background.xml”中,那么您将添加如下:“android:background="@drawable/radiobutton_background"。
    • @Ramesh_D 是的。 #778899 也可以是 #789。渲染时值只占两个位置。
    【解决方案2】:

    根据安卓。 https://developer.android.com/guide/topics/resources/color-list-resource.htmlhttps://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" />
    

    【讨论】:

      【解决方案3】:

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

      android:textColor="@color/textview_selector"

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

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

      希望它能节省一些人的时间。

      【讨论】:

        【解决方案4】:
            <?xml version="1.0" encoding="utf-8"?>
        <selector xmlns:android="http://schemas.android.com/apk/res/android">
            <item android:state_checked="false" android:drawable="@color/dark_grey"/>
            <item android:state_checked="true" android:drawable="@color/topic_green"/>
        </selector>
        

        这个对我有用。实际上,当我使用 android:color="@color/dark_grey" 时。它没有用。但是当我更改为可绘制时,它确实如此。

        【讨论】:

          【解决方案5】:
          <style name="MyRadioButton" parent="Theme.AppCompat.Light">
              <item name="colorControlNormal">@color/lbl_login</item>
              <item name="colorControlActivated">@color/btn_login_back_color</item>
          </style>
          
           <RadioButton
                  android:id="@+id/btn_radio_credit_card"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:layout_marginTop="@dimen/_8sdp"
                  android:fontFamily="@font/poppins_regular"
                  android:paddingStart="@dimen/_14ssp"
                  android:paddingEnd="@dimen/_1sdp"
                  android:text="Credit Card"
                  android:textColor="@color/lbl_login"
                  android:textSize="@dimen/_14ssp"
                  android:theme="@style/MyRadioButton" />
          

          Refrence

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2023-03-29
            • 1970-01-01
            • 1970-01-01
            • 2012-06-28
            • 2014-06-11
            相关资源
            最近更新 更多