ScrollView包含ListView出现的问题解决
来源:互联网 发布:php 字符串true false 编辑:程序博客网 时间:2024/06/06 05:04
ScrollView包含ListView出现的显示不全
关于这个问题,其实有很多网上有很多种解决方法,这里是计算了
ListView的高度。
公式:listView总高度=(每个Item的内容高度条目数量)+(每条分割线高度(条目数量-1))+上下填充高度
- 首先创建自定义View类继承ListView
代码如下
package com.example.myandroid_test_listview;import android.content.Context;import android.util.AttributeSet;import android.view.MotionEvent;import android.widget.ListView;public class MyListView extends ListView { public MyListView(Context context, AttributeSet attrs) { super(context, attrs); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { return super.onInterceptTouchEvent(ev); } @Override public boolean dispatchTouchEvent(MotionEvent ev) { getParent().requestDisallowInterceptTouchEvent(true); return super.dispatchTouchEvent(ev); }}
- 在XML布局文件中
<ScrollView 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" > <com.example.myandroid_test_listview.MyListView android:id="@+id/lv" android:layout_width="match_parent" android:layout_height="wrap_content" /></ScrollView>
- 在activity中带如下,这里主要写的计算高度的方法,和设置高度
代码如下
package com.example.myandroid_test_listview;import java.util.ArrayList;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.MeasureSpec;import android.view.ViewGroup;import android.view.ViewGroup.LayoutParams;import android.widget.ArrayAdapter;public class MainActivity extends Activity { private MyListView lv; private ArrayList<String> list; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //找控件 lv = (MyListView) findViewById(R.id.lv); //准备数据 setData(); //为lv设置adapter lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, list)); //设置lv的高度 setListViewHeight(lv); } @SuppressWarnings("rawtypes") private void setListViewHeight(MyListView lv) { //获取lv的适配器 ArrayAdapter adapter = (ArrayAdapter) lv.getAdapter(); //判断适配器是否为空,如果为空,则证明没有数据,也就不用计算高度了 if(adapter==null) { return; } //定义总高度变量 //listView总高度=(每个Item的内容高度*条目数量)+(每条分割线高度*(条目数量-1))+上下填充高度 int sumHeight=0; //遍历adapter,得到每条item for (int i = 0; i < adapter.getCount(); i++) { /** * position:每个item对应的索引 * convertView:复用,设置为null * parent:对应此adapter的lv控件 */ View item = adapter.getView(i,null,lv); //判断如果得到item不为空的话,则得到此item的高度,与总高度进行相加 if(item!=null) { //设置item所在的布局参数 item.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); //设置每个条目的测量宽高的方式 item.measure(MeasureSpec.UNSPECIFIED,MeasureSpec.UNSPECIFIED); //总高加每个item高度 sumHeight+=item.getMeasuredHeight(); } } ViewGroup.LayoutParams params = lv.getLayoutParams(); params.height=sumHeight +(lv.getDividerHeight()*(adapter.getCount()-1)) +lv.getPaddingTop()+lv.getPaddingBottom(); lv.setLayoutParams(params); } private void setData() { list = new ArrayList<String>(); for (int i = 0; i < 20; i++) { list.add("条目"+i); } }}
0 0
- ScrollView包含ListView出现的问题解决
- ScrollView中包含ListView问题解决
- ScrollView中包含ListView显示不全的问题解决方案
- ScrollView和ListView综合使用出现的问题解决方法
- ScrollView包含ListView的处理
- ScrollView包含ListView的解决方法
- ScrollView下的ListView问题解决
- ScrollView嵌套ListView的问题解决
- ScrollView嵌套ListView的问题解决方法
- ScrollView嵌套ListView的冲突问题解决
- ScrollView嵌套ListView的bug问题解决
- ScrollView嵌套ListView的bug问题解决
- ScrollView中包含ListView
- ScrollView 包含ListView解决方法
- ScrollView 嵌套listview 问题解决
- ScrollView+ListView冲突问题解决
- listView或者scrollView中包含gridView或listView的解决方法
- Scrollview嵌套Recyclerview出现的问题解决办法
- AndroidCamera使用
- 4类JavaScript内存泄露及如何避免
- Docker创建MySQL容器
- 百度之星初赛B hdu5696 区间的价值 分治思想
- hadoop + mahout 安装配置
- ScrollView包含ListView出现的问题解决
- opencv错误记录(2)opencv读取图片显示不出来
- 【codeforces】-#651A-Joysticks(耗电,充电)
- matlab中将小数转化为2进制数
- linux tail命令的使用方法详解
- Android开发之Intent跳转到系统应用中的拨号界面、联系人界面、短信界面
- Android UI开发第三十篇——使用Fragment构建灵活的桌面
- 第十三周项目1.3—分数中的运算符重载
- 行人检测(Pedestrian Detection)资源