2014-12-13 23 views
13

Bir dalga dalga oluşturabilir ve liste görünümü öğesi arka planının arka planı olarak ayarladım. Neredeyse iyi çalışıyor ama dalgalanma etkisi sadece bazen basında görünmüyor. İşte Dalgalanma etkisi bazen görünmüyor

dalgalanma çekilebilir kodudur:

<?xml version="1.0" encoding="utf-8"?> 
<ripple xmlns:android="http://schemas.android.com/apk/res/android" 
    android:color="?android:attr/colorControlHighlight"> 
    <item> 
     <selector> 
      <item android:state_activated="true"> 
       <shape><solid android:color="?android:attr/colorButtonNormal"/> 
       </shape> 
      </item> 

      <item> 
       <shape><solid android:color="@android:color/transparent"/> 
       </shape> 
      </item> 
     </selector> 
    </item> 
</ripple> 

Ve çekmece öğeler için arka plan olarak bu çekilebilir kullanan bir navigasyon çekmece var: Ben uygulamasını açtığınızda

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="@dimen/navigation_menu_height" 
    android:orientation="horizontal" 
    android:background="@drawable/listItemBackground"> 
    ....  
</RelativeLayout> 

Ancak her seferinde , varsayılan seçilen öğe bastığımda dalgalanma etkisini göstermez. Ama başka bir öğe seçip tekrar seçtikten sonra her şey yolunda gider.

Seçim modu birden çok dışında, hemen hemen aynı bir başka ListView için de aynısını kullanıyorum. Ve bu kez, öğeler seçildikleri sürece basın üzerindeki dalgalanma etkisini göstermeyeceklerdir.

Başka bir listede, seçim modunu belirtmeyen bir görünümde, yalnızca ilk öğe dalgalanma etkisini gösterir ve diğerleri de daha düşük Android sürümlerinde olduğu gibi davranır.

Tüm senaryolar için nasıl çalışacağım konusunda hiçbir fikrim yok. belki de gerçekten ListView seçim modu ile ilgilidir?

==== DÜZENLEME ====

Sadece eklenen özellik bütün bu üç listviews için drawSelectorOnTop ve şimdi ilk iki sorun temizlenir. Ancak üçüncü bir tanesi için şimdi şöyle olur:

Dalgalanma efekti, iki dalgayı gösteren ilk hariç tüm öğelerde iyi sonuç verir! Bunlardan biri parmağımın bastığı yerden başlar, diğeri her zaman ortadan başlar!

==== DÜZENLEME TEKRAR ==== Tamam, şimdi liste görünümü için drawSelectorOnTop özniteliği ile birlikte, dalgalanma düğümün dışında aktive durumunu taşımak için çekilebilir çimdik, sorun artık tamamen gitti.

+2

İkinci düzenlemeye bakıyorum - çözüme karar verdiyseniz ve düzeltdiyseniz, devam edin ve ayrıntılı bir yanıt olarak gönderin ve doğru olarak işaretleyin. Yoldaki birine yardımcı olabilir. –

cevap

6

Tamam, bazı deneme ve hatalardan sonra, sonunda iş aldım.

Birincisi, dalgalanma düğümün dışarı aktive hal taşıyın: Bundan sonra

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:state_activated="true"> 
     <shape> 
      <solid android:color="?android:attr/colorButtonNormal"/> 
     </shape> 
    </item> 
    <item> 
     <ripple android:color="?android:attr/colorControlHighlight"> 
      <item> 
       <shape> 
        <solid android:color="@android:color/transparent"/> 
       </shape> 
      </item> 
     </ripple> 
    </item> 
</selector> 

, set drawSelectorOnTop true öğesi arka planı olarak çekilebilir kullanmak ListView.

Şimdi dalgalanma etkisi mükemmel şekilde çalışabilir.

0

Benim durumumda, ilk tıklamadan sonra dalgalanma etkisi çalışıyor, ancak ilk tıklama için benim için çalışmadı. Arka plan seçici dosyasını android: state_activated = "true" ve main.xml android: clickable = "true" ile değiştirdikten sonra tüm zamanlar için iyi çalışıyor. (Res \ çekilebilir \ selector.xml altında)

selector.xml activity_main olarak

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_activated="true" android:drawable="@drawable/card_bg_pressed" android:state_enabled="true" android:state_pressed="true"/> 
<item android:state_activated="true" android:drawable="@drawable/card_bg_focused" android:state_enabled="true" android:state_focused="true"/> 
<item android:state_activated="true" android:drawable="@drawable/card_bg_selected" android:state_enabled="false" android:state_selected="true"/> 
</selector> 

.xml

<com.mysample.RecyclingImageView 
    android:id="@+id/imageview_overlay" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_horizontal" 
    android:background="@drawable/selector" 
    android:clickable="true" />