首页 > 代码库 > ScrollView cannot scroll in Slidinguppanellayout 解决办法
ScrollView cannot scroll in Slidinguppanellayout 解决办法
xml源码如下
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white" > <com.sothree.slidinguppanel.SlidingUpPanelLayout xmlns:sothree="http://schemas.android.com/apk/res-auto" android:id="@+id/sliding_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="bottom" sothree:dragView="@+id/name" sothree:panelHeight="40dp" sothree:paralaxOffset="100dp" sothree:shadowHeight="4dp" > <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/white" android:orientation="vertical" > <RelativeLayout android:id="@+id/rel_top_layout" android:layout_width="fill_parent" android:layout_height="50dp" android:background="@color/t_blue" > <TextView android:id="@+id/title_text_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:text="统计图" android:textColor="@color/white" android:textSize="22sp" /> <Button android:id="@+id/btn_back" android:layout_width="50dp" android:layout_height="fill_parent" android:layout_alignParentLeft="true" android:layout_centerVertical="true" android:background="@drawable/back_btn_selector" /> </RelativeLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_margin="10dp" android:layout_weight="1" android:background="@drawable/border" > <LinearLayout android:id="@+id/chart" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="10dp" android:orientation="vertical" > </LinearLayout> </LinearLayout> <RadioGroup android:id="@+id/radiogroup" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:orientation="horizontal" > <RadioButton android:id="@+id/radio_histogram" style="@style/param_text_style" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_margin="5dp" android:layout_weight="1" android:button="@drawable/radio_btn_selector" android:onClick="changeGraph" android:text="柱状图" /> <RadioButton android:id="@+id/radio_line_graph" style="@style/param_text_style" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_margin="5dp" android:layout_weight="1" android:button="@drawable/radio_btn_selector" android:onClick="changeGraph" android:text="折线图" /> </RadioGroup> </LinearLayout> <ScrollView android:id="@+id/scroll_view" android:layout_width="match_parent" android:layout_height="wrap_content" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:clickable="true" android:focusable="false" android:orientation="vertical" > <LinearLayout android:id="@+id/drag" android:layout_width="match_parent" android:layout_height="40dp" android:orientation="vertical" > <ImageView android:id="@+id/up" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#1594df" android:src="@drawable/icon_up" android:visibility="visible" /> <ImageView android:id="@+id/down" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#1594df" android:src="@drawable/icon_down" android:visibility="gone" /> </LinearLayout> <LinearLayout android:id="@+id/table_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:orientation="vertical" > </LinearLayout> </LinearLayout> </ScrollView> </com.sothree.slidinguppanel.SlidingUpPanelLayout> </RelativeLayout>
在Activity中
slidingUpPanel.setDragView(findViewById(R.id.drag)); // can‘t add this line // slidingUpPanel.setEnableDragViewTouchEvents(true);
在com.sothree.slidinguppanel.SlidingUpPanelLayout中的onInterceptTouchEvent 处理 case MotionEvent.ACTION_DOWN:
private boolean isDragViewHit(int x, int y) { if (isExpanded()) { // don‘t intercept touch if panel expanded return false; } else { // original implementation - only allow dragging on mDragView View v = mDragView != null ? mDragView : mSlideableView; if (v == null) return false; int[] viewLocation = new int[2]; v.getLocationOnScreen(viewLocation); int[] parentLocation = new int[2]; this.getLocationOnScreen(parentLocation); int screenX = parentLocation[0] + x; int screenY = parentLocation[1] + y; return screenX >= viewLocation[0] && screenX < viewLocation[0] + v.getWidth() && screenY >= viewLocation[1] && screenY < viewLocation[1] + v.getHeight(); } }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。