2015-03-31 14 views
12

Google'ın yeni Materyal Tasarımı, kullanıcının bu ekrandaki ana eylem için dikkatini çekmek üzere kayan işlem düğmelerini kullanmanızı önerir. Liste görünümünde bunun çok fazla örneği var.Kayan İşlem Diğer bileşenleri engelleyen düğme

Şimdi, liste görünümünüzün ekranı doldurmak için yeterli öğeye sahip olduğunu ve kaydırmanın imkansız olduğunu varsayın. Liste öğelerinizin, kullanıcının geçiş yapabileceği belirli bir bileşeni varsa, örneğin bir geçiş ya da favori bir yıldız gibi, kayan eylem düğmesinin bu bileşeni engellemesi de mümkündür. Bu davayı nasıl ele almalıyız?

DÜZENLEME: Bu aslında daima Listenizde son öğe ile olur

cevap

6

kontrol Şimdi ekranınızın sığacak öğe sayısını aldıktan sonra. Listenizi kaydettiğinizde, son öğe ortaya çıkar ve yüzer düğme, listenin son öğesini gizlemez. Bu basit ve hızlı bir çözümdür.

0

listesi yüklenirken ederken, Bir bayrak oluşturabilir ve listedeki öğe son görülebilir öğesi ekranında ise bulmak , kayan düğmeyi gizlemek yerine. 7 öğe listedeki son görünür ise

kullanımı bu bulmak için son görünür madde

int currentPosition = list.getLastVisiblePosition(); 

Bunu currentPosition = 7 değerini dönecektir daha item.i.e son sayısını elde edecek;

listenin altbilgi düğmeye yüzen aynı yüksekliğe sahip bir boş Görünüm Ekle bayrak

if(listAdapterItemsArray.get(position) == currentPosition) { 
    //hide button 
} else { 
    //nothing 
} 
+0

Listede yalnızca 7 öğeniz varsa, bunların tümü görüntülenir, liste kaydırılamaz ancak düğmeyi gizlerseniz, son öğeyle çakışmazsa ne olur? – stan0

+0

Tam olarak, liste yeterli ekrana geldiğinde düğmeyi gizleyin. –

+0

Bu durumda düğmenin işlevselliği eksik olmaz mıydı? – stan0

1

sadece şimdi bu sorunu vardı ve ben bu şekilde çözüldü:

public void addBlankSpace(ListView listView) 
{ 
    Space space = new Space(listView.getContext()); 
    space.setMinimumHeight(Core.dpToPx(50)); 
    listView.addFooterView(space); 
} 

Ve daha iyi bir yolu her zaman vardır sanırım. İhtiyacın olup olmadığını kontrol etmek gibi. ve sadece onu görüntülemek için. ama şimdilik, bu basit kod gayet iyi çalışıyor. biz sadece biraz dolgu ekleyebilir

public static int dpToPx(int dp) 
{ 
    return (int)(dp * Resources.getSystem().getDisplayMetrics().density); 
} 

Veya: Sen sola google eylem düğmesinin konumunu ayarlayabilirsiniz

listView.setPadding(0, 0, 0, Core.dpToPx(50)); 
+1

Neden sadece XML kullanmıyoruz: 'paddingBottom =" 50dp "'? – Natix

0

üst

 `android:layout_gravity="top|left"` 
kullanarak burada

Ve

dönüşüm fonksiyonudur

Bu şekilde iyi görünüyor ve hiçbir şey saklamıyor.

+0

'top | left' işlevinin kullanılması, ilk liste öğesinin üzerindeki düğmeyi hareket ettirir. – althaus

0

Sadece google gmail uygulamasının ne yaptığını yapıyorum ve recyclerView (veya liste görünümü) için dolgu ekliyorum.

<android.support.v7.widget.RecyclerView 
android:id="@+id/my_recyclerview" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:clipToPadding="false" 
android:paddingBottom="100dp" />