1

В моем приложении у него есть вкладка внизу и ее содержимое с фрагментом. Я хочу исчезнуть и угаснуть свою нижнюю вкладку, пока пользователь прокручивает вверх и вниз.Как скрыть tabhost на прокрутке вверх или вниз

Пожалуйста, дайте мне ссылку на учебник, если у вас есть.

Спасибо

+0

это демо, то вы получите некоторое представление https://github.com/LarsWerkman/QuickReturnListView –

ответ

3

Вот один не очень элегантно, но простой способ.

yourScrollableView является View, который будет прокручиваться пользователем, viewYouNeedToHide является View, которая содержит вкладки, REQUIRED_SWIPE это расстояние прокрутки, которые показывают/скрыть событие будет чувствительным к.

использование
yourScrollableView.setOnTouchListener(new View.OnTouchListener() { 

    float mY; 
    float swipeDistance; 
    final float REQUIRED_SWIPE = 50; 

    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
    float y = event.getY(); 

    switch(event.getAction()) { 

     case MotionEvent.ACTION_DOWN : 
      swipeDistance = 0; 
      mY = y; 
      break; 

     case MotionEvent.ACTION_MOVE : 
      swipeDistance += y - mY; 
      if(Math.abs(swipeDistance) > REQUIRED_SWIPE) { 
       if(swipeDistance < 0) { 
        if(viewYouNeedToHide.getVisibility() == View.VISIBLE) { 
         TranslateAnimation animate = new TranslateAnimation(
           0,0,0,viewYouNeedToHide.getHeight()); 
         animate.setDuration(500); 
         animate.setFillAfter(false); 
         viewYouNeedToHide.startAnimation(animate); 
         viewYouNeedToHide.setVisibility(View.GONE); 
         swipeDistance = 0; 
        } 
       } else { 
        if(viewYouNeedToHide.getVisibility() != View.VISIBLE) { 
         TranslateAnimation animate = new TranslateAnimation(
           0,0,viewYouNeedToHide.getHeight(),0); 
         animate.setDuration(500); 
         animate.setFillAfter(false); 
         viewYouNeedToHide.startAnimation(animate); 
         viewYouNeedToHide.setVisibility(View.VISIBLE); 
         swipeDistance = 0; 
        } 
       } 
      } 

      mY = y; 
      break; 

    } 

    mY = y; 
    return false; 

    } 
}); 
+0

Это должно быть принято в качестве правильного ответа. Thx Taras. – Jaky71