1

Ich habe meine ImageView in XML wie folgt definiert:Warum verwendet meine auf ein ImageView angewendete status-list-drawbare Grafik nicht den gedrückten Zustand, wenn ich den ImageView berühre?

<ImageView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/fragment_imageView" 
     android:src="@drawable/ic_photo" 
     android:background="@drawable/button_state_list_drawable" /> 

Die button_state_list_drawable.xml ist:

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

    <item android:drawable="@drawable/button_pressed_state_drawable" 
     android:state_pressed="true" /> 

    <item android:drawable="@drawable/button_enabled_state_drawable" 
     android:state_enabled="true" /> 

</selector> 

Die button_pressed_state_drawable.xml ist:

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

    <size android:width="50dp" 
     android:height="50dp" /> 

    <padding android:left="25dp" 
     android:right="25dp" 
     android:top="25dp" 
     android:bottom="25dp" /> 

    <stroke android:color="#fff" 
     android:width="1dp" /> 

    <solid android:color="#1aafd0" /> 

</shape> 

Die button_enabled_state_drawable.xml ist:

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

    <size android:width="50dp" 
     android:height="50dp" /> 

    <padding android:left="25dp" 
     android:right="25dp" 
     android:top="25dp" 
     android:bottom="25dp" /> 

    <stroke android:color="#fff" 
     android:width="1dp" /> 

    <solid android:color="@android:color/transparent" /> 

</shape> 

Das Problem ist, dass wenn ich auf/berühren Sie die ImageView, die button_pressed_state_drawable nicht verwendet zu sein scheint, also kann ich nicht die <solid android:color="#1aafd0" /> in Aktion sehen (das ist im Grunde der einzige Unterschied zwischen den beiden Drawables), dh die Die Hintergrundfarbe ist immer noch transparent, anstatt in blau zu wechseln. Wo vermassle ich?

Antwort

3

Ich denke, Ihre ImageView ist nicht clickable.

Versuchen Sie, es klickbar zu machen, indem Sie ImageView.setClicked(true) verwenden.

oder

 android:clickable="true" 

Auch stellen Sie sicher, dass Ihre image resource Ihren Hintergrund nicht abgedeckt ist.

Dies ist, was ich getan habe, was gut funktioniert.

<ImageView 
     android:id="@+id/fragment_imageView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:background="@drawable/button_state_list_drawable" 
     android:clickable="true" 
     android:padding="20dp" 
     android:src="@drawable/ic_launcher"/> 
+0

Danke Kumpel. Das Einstellen dieses einzigen Attributs hat mir Kopfschmerzen bereitet. –

0
<item android:drawable="@drawable/button_pressed_state_drawable" 
    android:state_pressed="true" /> 

<item android:drawable="@drawable/button_enabled_state_drawable" 
    android:state_enabled="true" /> 

Eine Schaltfläche kann sowohl "gedrückt" als auch "aktiviert" sein. Versuchen Sie, android: state_enabled = "true" vom 2. Element zu entfernen.

+0

Versucht es. Kein Glück – Solace