相关疑难解决方法(0)

是否可以禁用ViewPager上的滚动

我有一个ViewPager实例化a View.当搜索结果返回到视图时,我想暂时禁用viewpager和子按钮的滚动.我打电话viewPager.setEnabled(false)但这不会禁用它.

有人有任何想法吗?

android android-viewpager

132
推荐指数
7
解决办法
11万
查看次数

如何在触摸特定视图时禁用viewpager适配器?

我有一个viewpager在向左/向右滑动时在标签之间切换.在我的第二个标签中,我有一些自定义视图,其中有捏和拖动的监听器但是当我尝试捏或拖动时,viewpager开始刷页面.

我想到的一个解决方案是在触摸那些特定视图时禁用滑动,只在触摸那些视图外时滑动.这可能吗?

更新: @Asok提供了解决方案.但后来更新了在我的情况下无法工作的代码,所以我发布了一段对我有用的代码:

public class CustomViewPager extends ViewPager {
private boolean swipeable = true;

public CustomViewPager(Context context) {
    super(context);
}

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

// Call this method in your motion events when you want to disable or enable
// It should work as desired.
public void setSwipeable(boolean swipeable) {
    this.swipeable = swipeable;
}

@Override
public boolean onInterceptTouchEvent(MotionEvent arg0) {
    return (this.swipeable) ? super.onInterceptTouchEvent(arg0) : false;
}
Run Code Online (Sandbox Code Playgroud)

让我假设我有一个可拖动的视图,我需要在拖动开始时禁用滑动,并在拖动完成时重新启用,所以在我所谓的视图的TouchEvent中:

    @Override
public boolean onTouchEvent(MotionEvent event) { …
Run Code Online (Sandbox Code Playgroud)

android android-viewpager

26
推荐指数
2
解决办法
3万
查看次数

使用ViewPager和PassByValue刷新页面时,onTouchEvent正在执行

在我的项目中使用onTouchEvent来检测屏幕上的触摸并相应地执行操作,并使用viewPager进行滑动操作.滑动问题是触摸操作正在执行.所以从这里找到解决方案解决了它.但我的新问题是,一旦TouchEvent.Action_up被执行,触摸就会被禁用.代码如下:

parent.setOnTouchListener(new OnTouchListener() {

    public boolean onTouch(View v, MotionEvent event) {

        switch(event.getAction())
        {
         case MotionEvent.ACTION_MOVE: 
                awesomePager.requestDisallowInterceptTouchEvent(true);
                break;
        case MotionEvent.ACTION_UP:
            awesomePager.requestDisallowInterceptTouchEvent(true);
             if(flag)
             {
               upperdock.setClickable(false);
                upperdock.bringToFront();
                tocparent.bringToFront();
                tocbottom.bringToFront();
                upperdock.setVisibility(RelativeLayout.VISIBLE);
                tocparent.setVisibility(LinearLayout.VISIBLE);
                tocbottom.setVisibility(LinearLayout.VISIBLE);
                flag=false;
             }
             else
             {

                parent.bringToFront();
                upperdock.setVisibility(RelativeLayout.INVISIBLE);
                tocparent.setVisibility(LinearLayout.INVISIBLE);
                tocbottom.setVisibility(LinearLayout.INVISIBLE);
                flag=true;
             }
             break;

        case MotionEvent.ACTION_CANCEL:
            awesomePager.requestDisallowInterceptTouchEvent(false);
             break;
        default:
            break;
        }

        return false;
    }
});
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,如果我返回false,则Action_up没有被执行..如果我返回true,则Action_cancel没有被执行..这是通过值传递的问题.

android pass-by-value touch-event android-viewpager

7
推荐指数
1
解决办法
3723
查看次数

ScrollView正在捕捉谷歌地图的触摸事件

我有一个水平滚动视图,其中包含视图组的层次结构,然后最终是一个谷歌地图.我的问题是HSV正在捕捉对地图意味着的左右拖动.我试过了

    hsv.requestDisallowInterceptTouchEvent(true);
Run Code Online (Sandbox Code Playgroud)

乃至

    mapView.getParent().requestDisallowInterceptTouchEvent(true);
Run Code Online (Sandbox Code Playgroud)

但无济于事.我有什么问题吗?或者你能建议另一个解决方案?

我认为这应该是我原来的问题:如何在ScrollView中实现Mapview中发布的解决方案.具体来说,我在哪里放置代码?

android android-layout

7
推荐指数
1
解决办法
1万
查看次数