解决scrollview 与 listview 控件冲突问题
来源:互联网 发布:linux 查看服务器域名 编辑:程序博客网 时间:2024/05/17 07:40
- scrollview 与listview 一起使用时,listview 的高度无法自适应解决方法如下:
编写自定义组件:MyListView:
import android.content.Context;import android.util.AttributeSet;import android.widget.ListView;public class MyListView extends ListView { public MyListView(Context context) { super(context); } public MyListView(Context context, AttributeSet attrs) { super(context, attrs); } public MyListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); }}
在布局文件引用
<com.android.medo.compoment.MyListView android:id="@+id/project_chart_lv" android:layout_width="match_parent" android:layout_height="wrap_content" android:dividerHeight="0dip" android:divider="#00000000"> </com.android.medo.compoment.MyListView>
计算listview的高度
public void setListViewHeightBasedOnChildren(ListView listView) { // 获取ListView对应的Adapter ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { return; } int totalHeight = 0; for (int i = 0; i < listAdapter.getCount(); i++) { // listAdapter.getCount()返回数据项的数目 View listItem = listAdapter.getView(i, null, listView); listItem.measure(0, 0); // 计算子项View 的宽高 totalHeight += listItem.getMeasuredHeight(); // 统计所有子项的总高度 } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight()*(listAdapter.getCount()- 1)); // listView.getDividerHeight()获取子项间分隔符占用的高度 // params.height最后得到整个ListView完整显示需要的高度 listView.setLayoutParams(params); }
生成适配展示数据后,调用setListViewHeightBasedOnChildren(ListView listView)
presenter.setListViewHeightBasedOnChildren(mBinding.projectChartLv);
此时解决了listview在scrollview 的自适应高度问题。
- 页面加载显示scrollview页面,无法置顶显示数据,而是直接显示listview的问题.
<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:focusableInTouchMode="true"> //只需设置该属性未true即可 <ScrollView android:scrollbars="none" android:id="@+id/sv_view" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <com.android.medo.compoment.MyListView android:dividerHeight="0dip" android:divider="#00000000" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/project_chart_lv"> </com.android.medo.compoment.MyListView> </LinearLayout> </ScrollView> </LinearLayout>
设置scrollview的父级标签focusableInTouchMode=”true”
0 0
- 解决scrollview 与 listview 控件冲突问题
- 解决scrollview与listview冲突问题
- 解决ScrollView 与listview冲突问题
- 解决ScrollView与ListView显示冲突问题
- ScrollView与ListView冲突解决
- scrollView与ListView 冲突解决
- ScrollView与ListView冲突解决
- 解决ListView与ScrollView冲突
- Scrollview 与 listview 冲突解决?
- ListView与ScrollView冲突问题
- ScrollView与ListView冲突问题
- 完美解决ScrollView与ListView冲突问题(ListView与ListView的冲突)
- 滚动条:解决ScrollView与ListView显示冲突问题
- 滚动条:解决ScrollView与ListView显示冲突问题
- Scrollview与Listview冲突,需要解决什么问题?
- 自定义控件解决ListView和ScrollView冲突
- 自定义控件解决ListView和ScrollView冲突
- 解决ScrollView 与 自定义控件中的onTouchEvent 冲突问题
- 单元格 右键选择栏
- python3对MySQL的数据备份的详细介绍
- Android音频开发(7):使用 OpenSL ES API(下)
- 如何安装tushare
- markdown中的数学公式简要
- 解决scrollview 与 listview 控件冲突问题
- nginx反向代理与负载均衡
- PHP连接MySql数据库方法总结
- javascript获取光标位置
- C++ tips 合集
- P2P协议
- Android可自定义动效的卡片切换视图
- JS资源
- Android ApiDemo实例解析