Ein ImageView mit einem transparenten Hintergrund. Wenn darauf geklickt wird, sollte sein Hintergrund blau werden und sollte blau bleiben, bis etwas anderes angeklickt wird. Ich benutze die state-list Zeichensätze dafür.
Was geschieht:
Der Code wird wie folgt gegeben. Das Problem ist, dass der Hintergrund blau wird, aber nicht blau bleibt. Also ich dachte, es ist, weil android:state_pressed
nur den Moment darstellt, wenn das Widget wird geklickt wird. Also habe ich auch android:state_selected="true"
zu button_state_list_drawable.xml
direkt nach android:state_pressed="true"
hinzugefügt. Was dann passiert ist, ist, dass der Hintergrund nicht mehr blau wurde, selbst wenn die Bildansicht ist, die geklickt wurde.
Wie behebe ich das?
ImageView
in XML wie folgt definiert:
<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"
android:clickable="true" />
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"
android:state_selected="true" />
<item android:drawable="@drawable/button_enabled_state_drawable" />
</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>
Haben Sie versucht, die verbleibenden ['Knopfzustände '] hinzuzufügen (http://developer.android.com/guide/topics/resources/color-list-resource.html) (' focused', 'selected' usw.) Vielleicht passierst du einen Zustand und die Farbe fällt auf den Standard zurück. – yennsarah