ViewPager中的水平滚动视图

men*_*top 7 android

我有像Android市场一样的水平滚动页面(ViewPager).

我的问题是我想在其中有一些水平滚动视图和一些图像?这可能吗?

就像现在一样,我在我的视图中得到一个小滚动,然后整个页面滚动.

谢谢你的时间!

Muz*_*ant 19

您需要扩展HorizontalScrollView和拦截触摸事件.对我有用的是以下示例:

public class MyScrollView extends HorizontalScrollView {

    public MyScrollView(Context p_context, AttributeSet p_attrs)
    {
        super(p_context, p_attrs);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent p_event)
    {
        return true;
    }

    @Override
    public boolean onTouchEvent(MotionEvent p_event)
    {
        if (p_event.getAction() == MotionEvent.ACTION_MOVE && getParent() != null)
        {
            getParent().requestDisallowInterceptTouchEvent(true);
        }

        return super.onTouchEvent(p_event);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,HorizontalScrollView您需要使用此自定义视图,而不是在布局XML中使用.

这篇文章就是帮我解决这个问题的原因

  • 如果您要做的唯一事情是允许滚动但仍然允许用户单击里面的元素,您只需要从onInterceptTouchEvent()内部控制所有内容.https://gist.github.com/brandondenney/b8ddd655664eb295129d (7认同)

sel*_*mal 0

<Linearlayout>
    <linearlayout>
        <scrollView>
           <ImageView1></ImageView>
           <ImageView2></....>
        </scrollView>
    </Linearlayout>
    <EditText>
</Linearlayout>
Run Code Online (Sandbox Code Playgroud)

在上述情况下,scrollVIew 仅适用于两个图像,不适用于编辑文本。

在其他情况下:

 <Linearlayout>
    <linearlayout>
        <scrollView>
            here listVIew with Images using listView adapter
        </scrollView>
    </Linearlayout>
    <EditText>
</Linearlayout>
Run Code Online (Sandbox Code Playgroud)

这里scrollView仅适用于listView。