2012-05-05 2 views
3

У меня есть HorizontalScrollView с длинным представлением в качестве дочернего элемента, поэтому HorizontalScrollView прокручивается и может прокручивать его дочерний по горизонтали. Есть ли возможность заблокировать это? Я не хочу, чтобы пользователь мог прокручивать представление.Android HorizontalScrollView отключить прокрутку

+1

Вид прокрутки для прокрутки! Если вы не хотите прокрутки пользователя, выберите другой способ, кроме использования scrollView. Вместо этого вы можете использовать анимацию. –

ответ

2

Хорошо, я нашел способ, как реализовать это.

Просто нужно создать свой собственный HorizontalScrollView и переопределить onTouchEvent методу

public class MyHSV extends HorizontalScrollView { 

    public MyHSV(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     init(context); 
    } 

    public MyHSV(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(context); 
    } 

    public MyHSV(Context context) { 
     super(context); 
     init(context); 
    } 

    void init(Context context) { 
     // remove the fading as the HSV looks better without it 
     setHorizontalFadingEdgeEnabled(false); 
     setVerticalFadingEdgeEnabled(false); 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent ev) { 
     // Do not allow touch events. 
     return false; 
    } 

    @Override 
    public boolean onInterceptTouchEvent(MotionEvent ev) { 
     // Do not allow touch events. 
     return false; 
    } 

} 

А затем в файле XML

<pathToClass.MyHSV xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:scrollbars="none" 
    android:id="@+id/myHSV> 

</pathToClass.MyHSV> 
11

Мое предложение заключается в использовании OnTouchListener, например:

В onCreate Метод


HorziontalScrollView scrollView= (HorizontalScrollView)findViewById(R.id.scrollView); 
scrollView.setOnTouchListener(new OnTouch()); 

И имеет класс:


private class OnTouch implements OnTouchListener 
{ 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
    return true; 
    } 
} 
+0

Это сработало для меня, спасибо! – jonassvensson

+0

Он отключает события касания, щелчок не работает. – user3304007

+0

Это спасло мой день! Фактически, я потратил час на то, как отключить небольшую прокрутку в TabLayout. Но я совсем забыл, что это своего рода scrollview! Это работает и в моем случае. –

Смежные вопросы