2014-01-22 10 views
5

Ich habe eine View, die ich einen Selektor-Hintergrund festlegen, die berührt werden sollte. Es tut, aber nur am 4.x. Auf 2.3 reagiert es einfach nicht auf Berührungen. Was könnte das Problem sein? Hier ist das Layout:XML-Selektor-Hintergrund funktioniert nicht auf 2.3

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:adjustViewBounds="true" 
    android:src="@drawable/idee_baden" 
    android:scaleType="centerInside" /> 

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentTop="true" 
    android:background="@drawable/background_selector" > 

    <TextView 
     android:id="@+id/textView1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_centerVertical="true" 
     android:layout_margin="8dp" 
     android:ellipsize="end" 
     android:padding="4dp" 
     android:singleLine="true" 
     android:textAppearance="@style/SmallTextBold" 
     android:textColor="#ffffff" /> 
</RelativeLayout> 

Und das ist die background_selector.xml:

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/blue9" 
      android:state_pressed="true" /> 
    <item android:drawable="@drawable/black9" /> 
</selector> 
+3

Nach der Antwort [hier] (http://stackoverflow.com/a/12081273/1798304), könnte es das Problem sein dass das Layout nicht anklickbar ist. Es kann Unterschiede zwischen den APIs geben. Haben Sie versucht, es anklickbar zu setzen? – MalaKa

+5

android: duplicateParentState = "true" hat den Trick gemacht, vielen Dank. – FWeigl

Antwort

1

Diese Funktionalität seit API 1 aktiviert wurde - so kann ich nicht Ich denke, das hat etwas damit zu tun, dass die Betriebssystemebene unterstützt wird, aber mehr damit, dass der Selektorcode schlecht formatiert ist.

Ich denke, Ihre Wähler nicht richtig formatiert ist. Ich denke, Ihre Artikel-Tag-Abschnitte sollten vollständiger ausgefüllt werden, und Sie sollten mehr davon haben.

Hier ist einer der Selektoren ich (vollständigere, aber immer noch einige der Optionen in Bezug auf Fokus vs. gedrückt fehlt). Beachten Sie, dass, um Angelegenheiten (das von oben nach unten ausgewertet werden):

<selector 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 
     android:drawable="@drawable/circle_button_on" 
     android:state_focused="true" 
     android:state_pressed="true"/> 
    <item 
     android:drawable="@drawable/circle_button_on" 
     android:state_focused="false" 
     android:state_pressed="true"/> 
    <item 
     android:drawable="@drawable/circle_button_off" 
     android:state_focused="true" 
     android:state_pressed="false"/> 
    <item 
     android:drawable="@drawable/circle_button_off" 
     android:state_focused="false" 
     android:state_pressed="false"/> 
</selector> 
+0

Sind Sie sicher, dass dies einen Unterschied macht? Mir scheint das merkwürdig, da ich immer dachte, dass es egal ist, was die anderen Zustände sind, solange du nur android: state_pressed in den Selektor eingibst. Ich habe mit Selektoren nur einschließlich 'android: state_pressed' gearbeitet und hatte nie Probleme .. – MalaKa

+0

Vielen Dank, ich habe die verkürzte Selector-Version überall verwendet, aber ich werde das im Hinterkopf behalten, nur für den Fall. – FWeigl

Verwandte Themen