2016-04-01 14 views
0

SwipeMenuListView'u nasıl özelleştirebilirim?Üç simgeyi SwipeMenuItem için SwipeMenuListView'da dikey olarak nasıl ayarlayabilirim

Kullanıcıya liste görünümünden herhangi bir öğeyi kaydırdığında üç simgeyi gösterecek şekilde üç simgeyi Dikey olarak Menü'ye koymak istiyorum.

Herhangi biri bana aynı şekilde yardımcı olabilir.

Şimdiden teşekkürler. Sen herhangi bir öğeyi tokatlamak için bu sınıfı kullanabilirsiniz enter image description here

+0

Hayır uygular hiç denemedim ama –

+0

yapmam. Sadece kodunuzu gönderirseniz yardımcı olabiliriz. Buna çaba göstermekten rahatsız olmazsanız, başkalarının beklemesini beklemeyin. – SubliemeSiem

+0

Görüntülü çağrı cihazı kullanarak böyle bir işlevsellik elde ettim. Bu konuda daha fazla ayrıntıya ihtiyacınız varsa –

cevap

1

bu görsel gibi

...

public class SwipeDetector View.OnTouchListener {

private static final int MIN_DISTANCE = 300; 
    private static final int MIN_LOCK_DISTANCE = 30; // disallow motion intercept 
    private boolean motionInterceptDisallowed = false; 
    private float downX, upX; 
    private AudioObjectHolder holder; 
    private int position; 

    public SwipeDetector(AudioObjectHolder h, int pos) { 
     holder = h; 
     position = pos; 
    } 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: { 
      downX = event.getX(); 
      return true; // allow other events like Click to be processed 
     } 

     case MotionEvent.ACTION_MOVE: { 
      upX = event.getX(); 
      float deltaX = downX - upX; 

      if (Math.abs(deltaX) > MIN_LOCK_DISTANCE && listView != null && !motionInterceptDisallowed) { 
       listView.requestDisallowInterceptTouchEvent(true); 
       motionInterceptDisallowed = true; 
      } 

      if (deltaX > 0) { 
       holder.deleteView.setVisibility(View.GONE); 
      } else { 
       // if first swiped left and then swiped right 
       holder.deleteView.setVisibility(View.VISIBLE); 
      } 

      swipe(-(int) deltaX); 
      return true; 
     } 

     case MotionEvent.ACTION_UP: 
      upX = event.getX(); 
      float deltaX = upX - downX; 
      if (Math.abs(deltaX) > MIN_DISTANCE) { 
       // left or right 
       swipeRemove(); 
      } else { 
       swipe(0); 
      } 

      if (listView != null) { 
       listView.requestDisallowInterceptTouchEvent(false); 
       motionInterceptDisallowed = false; 
      } 

      holder.deleteView.setVisibility(View.VISIBLE); 
      return true; 

     case MotionEvent.ACTION_CANCEL: 
      holder.deleteView.setVisibility(View.VISIBLE); 
      return false; 
     } 

    return true; 
    } 

    private void swipe(int distance) { 
     View animationView = holder.mainView; 
     RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) animationView.getLayoutParams(); 
     params.rightMargin = -distance; 
     params.leftMargin = distance; 
     animationView.setLayoutParams(params); 
    } 

    private void swipeRemove() { 
     remove(getItem(position)); 
     notifyDataSetChanged(); 
    } 
} 

}

+0

AudioObjectHolder nedir ve SwipeDetector'ı sınıfımda nasıl kullanabilirim? –

+0

AudioObjectHolder, Görünümünüzü elinde tutan bir sınıftır ... Eğitici bağlantı kontrolünü veriyorum ve anlamaya çalışın .. http://www.jayrambhia.com/blog/swipe-listview/ – Dinesh

İlgili konular