Android ScrollView 嵌套 ScrollView 滑动
来源:互联网 发布:centos查看开放端口 编辑:程序博客网 时间:2024/05/16 12:48
滑动问题就是解决事件的分发问题
MainActivity不需要任何代码,直接在布局中使用就可以了。
1:相配合的自定义布局,onInterceptTouchEvent MotionEvent.ACTION_DOWN情况下拦截情况
package com.example.test.scrollnesttest;import android.content.Context;import android.util.AttributeSet;import android.view.MotionEvent;import android.widget.RelativeLayout;public class MyRelativelayout extends RelativeLayout { public MyRelativelayout(Context context) { super(context); } public MyRelativelayout(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_DOWN) { return false; } else { return true; } }}
2:自定义MyScroll 嵌套在Scrollview中
需要了解requestDisallowInterceptTouchEvent();
事件是由父view传递到子view 此方法就是提醒父view是否拦截该事件。
package com.example.test.scrollnesttest;import android.content.Context;import android.util.AttributeSet;import android.util.Log;import android.view.MotionEvent;import android.view.View;import android.widget.ScrollView;/** * Created by win7 on 2016/9/13. */public class MyScroll extends ScrollView { public MyScroll(Context context) { super(context); } public MyScroll(Context context, AttributeSet attrs) { super(context, attrs); } private static final String TAG = "InnerScrollView"; private int oldY; @Override public boolean onTouchEvent(MotionEvent ev) { switch (ev.getAction()) { case MotionEvent.ACTION_DOWN: Log.e(TAG, "ACTION_DOWN: " + ev.getY()); oldY = (int) ev.getY(); //提醒父view不要拦截down事件 getParent().requestDisallowInterceptTouchEvent(true); break; case MotionEvent.ACTION_MOVE: Log.e(TAG, "ACTION_MOVE: " + ev.getY()); View childView = getChildAt(0); Log.e(TAG, "childView.getMeasuredHeight(): " + childView.getMeasuredHeight()); Log.e(TAG, "getScrollY(): " + getScrollY()); Log.e(TAG, "getHeight(): " + getHeight()); if ((getScrollY() == 0 && ev.getY() - oldY > 5) || (childView.getMeasuredHeight() <= getScrollY() + getHeight() && oldY - ev.getY() > 5)) { Log.e(TAG, "ev.getY() - oldY " + (ev.getY() - oldY)); //当滑动到最顶端和最底端的时候提醒父view拦截move事件 getParent().requestDisallowInterceptTouchEvent(false); } oldY = (int) ev.getY(); break; case MotionEvent.ACTION_UP: break; } return super.onTouchEvent(ev); }}
布局中直接调用即可
<?xml version="1.0" encoding="utf-8"?><ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="300dp" android:gravity="center" android:text="Hello World!" /> <com.example.test.scrollnesttest.MyRelativelayout android:layout_width="match_parent" android:layout_height="wrap_content"> <com.example.test.scrollnesttest.MyScroll android:id="@+id/scroll" android:layout_width="match_parent" android:layout_height="300dp" android:background="#00ff00"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk" /> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="100dp" android:gravity="center" android:text="ddddddddddddddddddddddddkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk" /> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="100dp" android:gravity="center" android:text="ffffffffffffffffffffffffffffffffffkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk" /> </LinearLayout> </com.example.test.scrollnesttest.MyScroll> </com.example.test.scrollnesttest.MyRelativelayout> <TextView android:layout_width="match_parent" android:layout_height="300dp" android:gravity="center" android:text="Hello World!" /> <com.example.test.scrollnesttest.MyRelativelayout android:layout_width="match_parent" android:layout_height="wrap_content"> <com.example.test.scrollnesttest.MyScroll android:layout_width="match_parent" android:layout_height="300dp" android:background="#00ff00"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk" /> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="100dp" android:gravity="center" android:text="ddddddddddddddddddddddddkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk" /> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="100dp" android:gravity="center" android:text="ffffffffffffffffffffffffffffffffffkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk" /> </LinearLayout> </com.example.test.scrollnesttest.MyScroll> </com.example.test.scrollnesttest.MyRelativelayout> <TextView android:layout_width="match_parent" android:layout_height="300dp" android:gravity="center" android:text="Hello World!" /> </LinearLayout></ScrollView>
点击demo下载地址
0 0
- Android ScrollView 嵌套 ScrollView 滑动
- ScrollView嵌套Scrollview滑动冲突
- 【Android】Scrollview嵌套EditText,使其滑动
- android scrollview嵌套viewpager滑动冲突
- android ScrollView 嵌套RecyclerView 解决滑动冲突
- android scrollview嵌套webview滑动冲突问题
- scrollview嵌套viewpager 滑动冲突
- ScrollView嵌套滑动冲突问题解决
- swipeRefreshLayout嵌套ScrollView滑动冲突
- SwipeRefreshLayout嵌套 Scrollview 滑动冲突
- ScrollView嵌套RecyclerView滑动冲突
- scrollview嵌套listliview滑动冲突
- ScrollView 嵌套 Recyclerview 滑动冲突
- android ScrollView嵌套ListView
- android ScrollView嵌套ListView
- android ScrollView嵌套Listview
- android ScrollView嵌套RecyclerView
- Android ScrollView嵌套WebView
- FastReport报表 不保存连接信息时使用多表数据源(代码)
- PT、CT、CVT各是什么意思?
- HDU-1316 How Many Fibs?(Java大数)
- Android Matrix详解
- 关于jdk安装问题
- Android ScrollView 嵌套 ScrollView 滑动
- Swift语法13:类的构造函数
- 例题:蛇形填数
- java集合框架系列---fail-fast机制
- 76. Minimum Window Substring
- 如何实现主备服务器的数据同步
- strstr的使用案例
- DNA结构该如何绘制
- 使用JS跳转时如何控制Target属性