Scrollview嵌套EditText,使其滑动

来源:互联网 发布:手机淘宝发货地筛选 编辑:程序博客网 时间:2024/06/05 17:33
 <ScrollView        android:id="@+id/sv_scrollview"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        android:fadingEdge="none"        android:scrollbars="none" ><LinearLayout            android:layout_width="fill_parent"            android:layout_height="fill_parent"            android:orientation="vertical" ><cn.ls.widget.ScrollviewEdit                android:id="@+id/sv_feedback"                android:layout_width="fill_parent"                android:layout_height="100dip"                android:layout_gravity="center"                android:fadingEdge="none"                android:scrollbars="none"                android:visibility="visible" >                <LinearLayout                    android:layout_width="fill_parent"                    android:layout_height="100dip"                    android:gravity="center"                    android:scrollbars="vertical" >                    <EditText                        android:id="@+id/et_feedback"                        android:layout_width="fill_parent"                        android:layout_height="wrap_content"                        android:layout_gravity="center"                        android:layout_marginLeft="13dip"                        android:layout_marginRight="13dip"                        android:clickable="true"                        android:enabled="false"                        android:focusable="false"                        android:gravity="top"                        android:scrollbars="vertical"                        android:singleLine="false"                        android:background="@null"                        android:text="" />                                   </LinearLayout>            </cn.ls.widget.ScrollviewEdit>  </LinearLayout>    </ScrollView>

这里是自定义的Scrollview,当然你也可以使用原生的。

因为我的整个页面是在一个Scrollview中,所以这又涉及到Scrollview嵌套Scrollview的问题,所以需要屏蔽父级的Scrollview.

public class ScrollviewEdit extends ScrollView {private static final String TAG = "ScrollviewEdit";   private ScrollView parent_scrollview; public ScrollView getParent_scrollview() {return parent_scrollview;}public void setParent_scrollview(ScrollView parent_scrollview) {this.parent_scrollview = parent_scrollview;}public ScrollviewEdit(Context context) {super(context);}public ScrollviewEdit(Context context, AttributeSet attrs) {super(context, attrs);}int currentY;@Overridepublic boolean onInterceptTouchEvent(MotionEvent ev) {LogUtils.i(TAG, "onInterceptTouchEvent--------");    if (parent_scrollview == null) {return super.onInterceptTouchEvent(ev);} else {if (ev.getAction() == MotionEvent.ACTION_DOWN) {// 将父scrollview的滚动事件拦截currentY = (int) ev.getY();setParentScrollAble(false);LogUtils.i(TAG, "将父scrollview的滚动事件拦截-----");    return super.onInterceptTouchEvent(ev);  } else if (ev.getAction() == MotionEvent.ACTION_UP) {// 把滚动事件恢复给父ScrollviewsetParentScrollAble(true);LogUtils.i(TAG, "把滚动事件恢复给父Scrollview-----");  } else if (ev.getAction() == MotionEvent.ACTION_MOVE) {}}return super.onInterceptTouchEvent(ev);  }/** * 是否把滚动事件交给父scrollview * @param flag */private void setParentScrollAble(boolean flag) {parent_scrollview.requestDisallowInterceptTouchEvent(!flag);}}


其中private ScrollView parent_scrollview; 代表传递过来的父级Scrollview.

0 0
原创粉丝点击