文字颜色选择器不工作颜色、文字、选择器、工作

2023-09-07 10:13:54 作者:看不透的世界看不透的你

我这样做过。我复制粘贴。我复制粘贴许多其他的例子从网。我根本无法使文本颜色选择器的工作。它设置默认颜色的TextView的,但如果你点击的TextView也不会改变。该settings_selector为背景正常工作。

I did this before. I copy-pasted. I copy-pasted many other examples from the net. I simply cannot make the textcolor selector work. It sets the default color to the textview, but it won't change if you click on the textview. The settings_selector for the background works fine.

这是布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/settings_selector"
    android:clickable="true"
    android:id="@+id/llRecentChanges"
    android:paddingTop="5dp"
    android:paddingBottom="5dp"
    android:paddingLeft="5dp">
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/llRecentChanges2"
        android:layout_weight="1"
        android:layout_gravity="center_vertical">
    <TextView
        android:id="@+id/tvAbout"
        android:text="@string/settings_recentchanges"
        android:gravity="center_vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="16dp"
        android:textColor="@drawable/settings_selector_txt" >
    </TextView>
    <TextView
        android:id="@+id/tvAbout2"
        android:text="@string/settings_recentchanges2"
        android:gravity="center_vertical"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@drawable/settings_selector_txt"
        android:textSize="10dp">
    </TextView>
    </LinearLayout>

</LinearLayout>

这是settings_selector_txt XML:

This is the settings_selector_txt xml:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" 
          android:state_pressed="false" 
          android:color="#FFFFFF" />
    <item android:state_focused="true" 
          android:state_pressed="true"
          android:color="#ffa800" />
    <item android:state_focused="false" 
          android:state_pressed="true"
          android:color="#ffa800" />
    <item android:color="#FFFFFF" />
</selector>

或本

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

    <item android:state_selected="true" android:color="#444"/>
    <item android:state_focused="true" android:color="#444"/>
    <item android:state_pressed="true" android:color="#444"/>
    <item android:color="#ccc"/>

</selector>

或本

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" android:state_pressed="false" android:color="#ffffff" />
    <item android:state_focused="true" android:state_pressed="true" android:color="#000000" />
    <item android:state_focused="false" android:state_pressed="true" android:color="#000000" />
    <item android:color="#ffffff" />
</selector>

他们没有一个是工作。把选择XML的颜色的文件夹也无解。 任何想法?

None of them is working. Putting the selector xml to the color folder is also no solution. Any ideas?

推荐答案

请确保您的TextView已经准备好聆听您所申请的状态。 例如,为了能够达到你的TextView应该点击了pssed STATE_ $ P $:

Make sure your TextView is ready for listening the states you are applying for. For instance, to be able to reach the "state_pressed" your textView should be clickable:

android:clickable="true"

编辑:我们去那里。这种布局做这项工作。需要注意的是,它收集的单击事件查看是的LinearLayout,但TextView的再现,因为duplicateParentState设置为true的吧。颜色选择器会照顾的颜色,为不同的状态。

There we go. This layout does the job. Note that the View that gathers the click event is the linearLayout, but the TextView reproduces it because of "duplicateParentState" set to true. The color selector would take care of the colors for the different states.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/testLlayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:clickable="true" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textColor="@drawable/textview_selector"
        android:duplicateParentState="true"
        android:text="TextView" />

</LinearLayout>

这里是code的颜色选择。

And here is the code for the color selector.

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

    <item android:state_selected="true" android:color="#444"/>
    <item android:state_focused="true"  android:color="#444"/>
    <item android:state_pressed="true"  android:color="#444"/>
    <item android:color="#ccc"/>

</selector>

这应该是它。

That should be it.