Селектор не работает при нажатии кнопки - PullRequest
0 голосов
/ 29 ноября 2018

Я хотел бы изменить цвет фона для держателя элемента при его нажатии.Для этого я пытался использовать «селектор» и «state_pressed» на нем, но он не работает.

В этом тестовом коде я пытался сделать это с помощью кнопки и линейного макета просто для тестирования.Я делаю это так, потому что в моем реальном коде держатель элемента будет внутри 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 голосов
/ 29 ноября 2018

Я полагаю, что это из-за вашего селектора и как он настроен.Значение по умолчанию 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...