SORU
1 NİSAN 2010, PERŞEMBE


Liste görünümü özel seçici ile arka plan öğesi

Liste seçici ile her liste Görünümü öğesi için özel bir arka plan uygulamak mümkün mü?

Varsayılan seçici state_focused="false" durum @android:color/transparent belirtir, ama bazı özel drawable bu değişen seçili olmayan öğeleri etkilemez. Romain Adam bunun mümkün olduğunu in this answer önermek gibi görünüyor.

Ben şu anda elde aynı etkiler kullanarak, özel bir arka plan üzerinde her görünüm ve saklanan öğe seçildiğinde/odaklı/ne kadar seçici olduğunu göstermiştir, ama olacak daha şık olmak zorunda bu tüm tanımlı bir yer.

Başvuru için, bu deneyin ve bu çalışma almak için kullanıyorum seçici:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_focused="false"
        android:drawable="@drawable/list_item_gradient" />

    <!-- Even though these two point to the same resource, have two states so the drawable will invalidate itself when coming out of pressed state. -->
    <item android:state_focused="true" android:state_enabled="false"
        android:state_pressed="true"
        android:drawable="@drawable/list_selector_background_disabled" />
    <item android:state_focused="true" android:state_enabled="false"
        android:drawable="@drawable/list_selector_background_disabled" />

    <item android:state_focused="true" android:state_pressed="true"
        android:drawable="@drawable/list_selector_background_transition" />
    <item android:state_focused="false" android:state_pressed="true"
        android:drawable="@drawable/list_selector_background_transition" />

    <item android:state_focused="true"
        android:drawable="@drawable/list_selector_background_focus" />

</selector>

Ve bu seçici ayarlıyorum o kadar

<ListView
    android:id="@android:id/list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:listSelector="@drawable/list_selector_background" />    

Herhangi bir yardım için şimdiden teşekkür ederiz!

CEVAP
13 Mayıs 2010, PERŞEMBE


Bu tek başıma sinirli oldum ve nihayet çözüldü. Romain Adama ima olarak, başka bir devlet yok": state_selected" kullanmanız gerekir. android Liste öğesinin arka plan için devlet bir drawable kullanın ve listenizin listSelector için farklı bir devlet drawable kullanın:

list_row_layout.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:background="@drawable/listitem_background"
    >
...
</LinearLayout>

listitem_background.xml:

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

layout.xml bu liste Görünümü içerir:

...
<ListView 
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   android:listSelector="@drawable/listitem_selector"
   />
...

listitem_selector.xml:

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

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ipsy

    ipsy

    1 EKİM 2012
  • MVLV28

    MVLV28

    17 Mart 2008
  • paulandstorm

    paulandstorm

    4 EYLÜL 2006