最近的项目中遇到了SrcollView内嵌ListView的需求,要求ListView内容全部展示,但是实际效果ListView却只显示了一行,一开始以为是代码异常了,只生成了一行视图,实际上就是SrcollView和ListView的冲突问题。解决办法就是禁止ListView的滑动。
一、自定ListView,其实就是包了一层处理而已,很简单。
package com.hundsun.bridge.view; import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import android.widget.ListView; /** * @Description: 禁止滑动的ListView * @Author: [email protected] * @Package: com.hundsun.bridge.view * @Date: 2017/3/31 * @Copyright: 版权归 HsYuntai 所有 * <ModifyLog> * @ModifyContent: * @Author: * @Date: * </ModifyLog> */ public class FixedListView extends ListView { public FixedListView(Context context) { super(context); } public FixedListView(Context context, AttributeSet attrs) { super(context, attrs); } public FixedListView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @Override public boolean dispatchTouchEvent(MotionEvent ev) { if (ev.getAction() == MotionEvent.ACTION_MOVE) { return true; } return super.dispatchTouchEvent(ev); } @Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); } }
二、布局文件跟普通的ListView一样,下面给大家贴出我的代码参考。
<com.hundsun.bridge.view.FixedListView android:id="@+id/userMenuListView" style="@style/HundsunStyleWmHw" android:cacheColorHint="@android:color/transparent" android:choiceMode="singleChoice" android:divider="@drawable/hundsun_shape_user_menu_item_divider" android:dividerHeight="@dimen/hundsun_dimen_small_divide" android:fadingEdge="none" android:listSelector="@android:color/transparent" android:overScrollMode="never" android:scrollbars="none" android:paddingTop="@dimen/hundsun_dimen_small_divide" android:paddingBottom="@dimen/hundsun_dimen_small_divide" android:background="@drawable/hundsun_shape_top_bottom_line"/>
时间: 2024-11-16 22:16:12