【问题标题】:ToggleButton with custom image and custom text color具有自定义图像和自定义文本颜色的切换按钮
【发布时间】:2015-11-28 06:05:18
【问题描述】:

我有这个开关:

<ToggleButton
    android:id="@+id/toggle_1"
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="1"
    android:background="@drawable/custom_toggle_bg"
    android:gravity="bottom|center_horizontal" />

这是可绘制的资源:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:drawable="@drawable/active" android:state_checked="true"/>
    <item android:drawable="@drawable/default" android:state_checked="false"/>

</selector>

现在我希望 ToggleButton 的文本(打开和关闭)在 Toggle 更改状态时更改颜色(仅文本,而不是整个 ToggleButton 的背景)。 我该怎么办?

【问题讨论】:

    标签: android togglebutton android-togglebutton


    【解决方案1】:

    您可以将属性android:textColor="@drawable/color_selector" 添加到您的&lt;ToggleButton&gt;

    //color_selector.xml
    <selector xmlns:android="http://schemas.android.com/apk/res/android">
        <item android:state_checked="true" color="@color/text_on" />
        <item android:state_checked="false" color="@color/text_off" />
    </selector>
    

    【讨论】:

      【解决方案2】:

      在./res/color/my_selector.xml 位置创建另一个选择器并将其设置为ToggleButton android:textColor="@color/my_selector"

      示例my_selector.xml

      <?xml version="1.0" encoding="utf-8"?>
      <selector xmlns:android="http://schemas.android.com/apk/res/android">
      
          <item color="@color/text_active" android:state_checked="true"/>
          <item color="@color/text_default" android:state_checked="false"/>
      
      </selector>
      

      【讨论】:

      • 文本不可绘制,是“颜色”
      【解决方案3】:

      在您的代码中,使用OnClickListener。

      protected void onCreate(Bundle savedInstanceState) {
        final ToggleButton tb = new ToggleButton(DataHandler.getContext());
        tb.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View view) {
            if (tb.isChecked()) {
              tb.setTextColor(Color.GREEN);
            }
            else {
              tb.setTextColor(Color.RED);
            }
          }
        });
      }
      

      【讨论】:

        猜你喜欢
        • 2018-08-05
        • 1970-01-01
        • 2019-01-24
        • 2019-06-24
        • 2014-09-25
        • 2012-12-01
        • 2014-06-03
        • 2011-08-28
        • 1970-01-01
        相关资源
        最近更新 更多