2015-06-01 10 views
5

Basit bir düzen, bir liste görünümü ve filtreleme ve sıralama seçenekleri için iki simgem var. İki seçenekten birini tıkladığımda, liste görünümünün üzerine yerleştirilmiş bir düzenim var ve ekranın yalnızca% 60'ını kaplıyor, böylece liste görünümünü kısmen görülebilir hale getiriyor. Elde etmek istediğim, bu liste görünümü için de kaydırma işlemini devre dışı bırakmaktır; yer paylaşımı görünür olduğu sürece liste görüntüleme öğelerinin hiçbiri tıklanabilir olmamalıdır. Android'i devre dışı bırak ve liste görünümü için tıkla

Ben liste görünümü üzerinde

setEnabled(false) 
setClickable(false) 

kullanarak çalıştı ama hiçbir şey fark etmez. Bunu başarmanın başka yolları nelerdir?

@Override 
public boolean isEnabled(int position) { 
    return false; 
} 
şöyle

cevap

0

Sen ebeveyn scrollview

parentview.requestDisallowInterceptTouchEvent (doğru) devre dışı bırakmak için bunu kullanabilir; Yer paylaşımı görünürse,

.

+0

bunu mükemmel yapar. Teşekkürler –

+0

eğer öyleyse o zaman alarımı kabul edebilir miydiniz? – Sivaranjani

0

Eğer isEnabled yöntemi geçersiz ArrayAdapter aramaları özel olarak, tıklama devre dışı bırakarak İçin OnTouchListener()

listView.setOnTouchListener(new OnTouchListener() { 
    public boolean onTouch(View v, MotionEvent event) { 
     if (event.getAction() == MotionEvent.ACTION_MOVE) { 
      return true; // Indicates that this has been handled by you and will not be forwarded further. 
     } 
     return false; 
    } 
}); 

VEYA

listView.setScrollContainer(false); 

kullanabilirsiniz kaydırma devre dışı bırakmak için

+0

Tıklanabilirliği tekrar etkinleştirmek istersem ne olur? –

+0

"return true;" isEnabled içinde. Bir boolean kullanabilir ve ihtiyacınıza göre geri dönebilirsiniz. –

+0

Eğer yanılmıyor isEnabled başlangıçta liste oluştururken çalışacaktı, yani listeyi ilk yüklediğimde, böyle bir durumda isEnabled'ın uyguladığım herhangi bir koşula göre çalışacağını ve görünümün tıklanabilirliğini ayarlayacağını anlayabiliyorum, ama Liste görünümü zaten oluşturulduktan sonra bile çalışır ve sonra bazı kullanıcı tıklatma eyleminde bundan sonra tıklanabilirliğe karar vermek isterim? Bu cephede biraz kafam karıştı. –

1

Yerleşimin uygulanmasını öneririm Bütün ekranda olacağım. Daha sonra, bindirmeyi (dikey) doğrusal düzende ağırlıklar (% 60 /% 40 oranına ulaşmak için) ile sarabilirsiniz. Doğrusal düzende, mevcut kaplamayı ilk çocuk olarak yerleştirin ve ikinci bir çocuk olarak dokunma olaylarını engelleyecek şeffaf bir görünüm koyun. Bu sayede liste görünümünde herhangi bir değişiklik yapmanız gerekmeyecektir.

+0

Neden filtre seçeneği kapsayıcısını bindirme alt öğesinin alt yapısını kullanmayın (bindirme bağını/çerçeve düzenini yapmanız gerekir). Ne önerdiğimi denedin mi? –

+0

Önerinizi aldım, ancak dokunma olaylarını engellemek için şeffaf ikinci çocuk kullanmak yerine, yarı saydam yer paylaşımı maskem benim için çalışıyor. –

İlgili konular