选择器不适用于单击按钮效果

时间:2018-11-29 01:07:57

标签: java android android-layout onclick

我想更改itemviewholder的背景色。为此,我尝试在其上使用“选择器”和“ state_pressed”,但不起作用。

在此测试代码中,我尝试使用按钮和linearlayout进行测试。我这样做是因为在我的真实代码中,itemviewholder将位于LinearLayout中。该按钮也只是测试。我正在使用API​​ 16。

为什么不起作用(当我单击按钮或线性布局时什么也没有发生),如何解决此问题?

colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>
</resources>

drawable / item_effect.xml

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

    <!-- default -->
    <item android:drawable="@color/colorAccent"/>

    <!-- pressed -->
    <item android:state_pressed="true"
        android:drawable="@color/colorPrimaryDark"/>

</selector>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_centerHorizontal="true"
        android:background="@drawable/item_effect"></LinearLayout>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:background="@drawable/item_effect"/>

</RelativeLayout>

MainActivity.java

package br.com.roger.selectortest;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

1 个答案:

答案 0 :(得分:2)

我相信这是因为您的选择器及其设置方式。选择器中的默认item必须是最后一个。试试

<?xml version="1.0" encoding="utf-8"?>
<selector
xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- pressed -->
    <item android:state_pressed="true"
        android:drawable="@color/colorPrimaryDark"/>

    <!-- default -->
    <item android:drawable="@color/colorAccent"/>
</selector>