相关疑难解决方法(0)

ScrollView Touch Handling中的Horizo​​ntalScrollView

我有一个ScrollView环绕我的整个布局,以便整个屏幕可滚动.我在这个ScrollView中的第一个元素是一个Horizo​​ntalScrollView块,它具有可以水平滚动的功能.我在horizo​​ntalscrollview中添加了一个ontouchlistener来处理触摸事件并强制视图"捕捉"到ACTION_UP事件上最近的图像.

所以我想要的效果就像股票android主屏幕,你可以从一个滚动到另一个,当你举起手指时,它会捕捉到一个屏幕.

这一切都很有效,除了一个问题:我需要从左到右几乎完全水平滑动,以便ACTION_UP进行注册.如果我至少垂直滑动(我认为许多人往往会在他们的手机上左右滑动),我会收到ACTION_CANCEL而不是ACTION_UP.我的理论是,这是因为横向视图滚动视图位于滚动视图内,并且滚动视图正在劫持垂直触摸以允许垂直滚动.

如何在水平滚动视图中禁用滚动视图的触摸事件,但仍允许在滚动视图中的其他位置正常垂直滚动?

这是我的代码示例:

   public class HomeFeatureLayout extends HorizontalScrollView {
    private ArrayList<ListItem> items = null;
    private GestureDetector gestureDetector;
    View.OnTouchListener gestureListener;
    private static final int SWIPE_MIN_DISTANCE = 5;
    private static final int SWIPE_THRESHOLD_VELOCITY = 300;
    private int activeFeature = 0;

    public HomeFeatureLayout(Context context, ArrayList<ListItem> items){
        super(context);
        setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
        setFadingEdgeLength(0);
        this.setHorizontalScrollBarEnabled(false);
        this.setVerticalScrollBarEnabled(false);
        LinearLayout internalWrapper = new LinearLayout(context);
        internalWrapper.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
        internalWrapper.setOrientation(LinearLayout.HORIZONTAL);
        addView(internalWrapper);
        this.items = items;
        for(int i = 0; i< items.size();i++){
            LinearLayout featureLayout = (LinearLayout) View.inflate(this.getContext(),R.layout.homefeature,null);
            TextView header = (TextView) …
Run Code Online (Sandbox Code Playgroud)

android horizontalscrollview ontouchlistener android-scrollview

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

ScrollView中的MapView?

我想在ScrollView中有一个MapView,但是当我尝试滚动地图时,ScrollView优先考虑!有什么方法可以在地图内部滚动时赋予MapView优先级,而ScrollView则不然?

谢谢!

android google-maps android-maps

64
推荐指数
6
解决办法
3万
查看次数

如何在滚动视图中设置谷歌地图片段

我想设置内垂直一个谷歌地图片段ScrollView,当我做的地图不垂直缩放,我怎么可以覆盖触摸事件监听器MapView上的监听器ScrollView

这是我的xml代码:

  <ScrollView  android:layout_height="wrap_content"
    android:layout_width="fill_parent"
     android:layout_above="@id/footer"
    android:layout_below="@id/title_horizontalScrollView">

   ///other things



<fragment 
    android:id="@+id/map"
    android:layout_width="fill_parent"
    android:layout_height="300dp"
    class="com.google.android.gms.maps.SupportMapFragment"
    />

  //other things
Run Code Online (Sandbox Code Playgroud)

android google-maps android-fragments

36
推荐指数
4
解决办法
2万
查看次数

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万
查看次数

NestedScrollView里面的MapView没有滚动

像这样在xml中膨胀我的Mapview

<android.support.v4.widget.NestedScrollView
        android:id="@+id/sv_offers"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="56dp"
        android:visibility="gone"
        app:layout_behavior="@string/appbar_scrolling_view_behavior">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <com.xys.widgets.CustomMapView
                android:id="@+id/mapView"
                android:layout_width="match_parent"
                android:layout_height="125dp"/>


        </LinearLayout>

    </android.support.v4.widget.NestedScrollView>
Run Code Online (Sandbox Code Playgroud)

我已经实现了自定义Mapview如下: -

public class CustomMapView extends MapView {

    private ViewParent mViewParent;

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

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

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

    public void setViewParent(@Nullable final ViewParent viewParent) { //any ViewGroup
        mViewParent = viewParent;
    }

    public CustomMapView(Context context, GoogleMapOptions options) {
        super(context, options);
    }

    @Override
    public …
Run Code Online (Sandbox Code Playgroud)

android google-maps android-layout google-play-services android-maps-v2

6
推荐指数
1
解决办法
2088
查看次数