计算Listview的高度解决Scrollview和listview的冲突
2016-05-13 11:05
357 查看
计算Listview的高度
MainActivity
MainActivity
package com.example.lvandsc; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.view.View.MeasureSpec; import android.view.ViewGroup.LayoutParams; import android.widget.ArrayAdapter; public class MainActivity extends Activity { private String[] itemdata = { "C语言", "C语言", "C语言", "C语言", "C语言", "C语言", "C语言", "C语言", "C语言", "C语言", "C语言", "C语言", "C语言", }; private Mylistview lv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); lv = (Mylistview) this.findViewById(R.id.mylv); // 初始化数据 inidata(); // 计算宽度 setlvHight(lv); } private void setlvHight(Mylistview listview) { ArrayAdapter<String> listadapter = (ArrayAdapter<String>) listview .getAdapter(); if (listadapter == null) { return; } int totalHight = 0; for (int i = 0; i < listadapter.getCount(); i++) { View listitem = listadapter.getView(i, null, listview); if (listitem != null) { listitem.setLayoutParams(new LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); listitem.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED); totalHight += listitem.getMeasuredHeight(); } ViewGroup.LayoutParams params = listview.getLayoutParams(); params.height = listview.getPaddingBottom() + listview.getPaddingTop() + (listadapter.getCount() - 1 * (listview .getDividerHeight())) + totalHight; // 判断是否超过屏幕长度的一半 int h = getWindowManager().getDefaultDisplay().getHeight(); if (params.height > h / 2) { params.height = h / 2; } listview.setLayoutParams(params); } } private void inidata() { ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, itemdata); lv.setAdapter(adapter); } }自定义listview
package com.example.lvandsc; 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); // TODO Auto-generated constructor stub } @Override public boolean onTouchEvent(MotionEvent ev) { boolean b = super.onTouchEvent(ev); return b; } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { boolean b = super.onInterceptTouchEvent(ev); return b; } @Override public boolean dispatchTouchEvent(MotionEvent ev) { // TODO Auto-generated method stub getParent().requestDisallowInterceptTouchEvent(true); boolean b = super.dispatchTouchEvent(ev); return b; } }
相关文章推荐
- {Repeater控件} Repeater控件的用法流程及实例
- tensorflow浅谈
- ListView 显示空白页
- PHP问题 —— failed to open stream: HTTP request faile
- C strchr strrchr查找一个字符
- 过滤器和拦截器的区别
- Linux 文本编辑之Vim/Vi
- vijos || bzoj 划船记
- Mysql事务,并发问题,锁机制
- 设计高效数据库的原则
- iOS app 上传到AppStore过程中遇到的问题汇总
- (转)面向程序员的数据库访问性能优化法则
- XML技术之DOM4J解析器
- iconfont.cn阿里巴巴矢量图下载字体图标实战
- java实现插入排序,增加减少循环的功能
- PHP问题 —— Warning: PHP Startup: Unable to load dyna
- java发送邮件常见问题(附源代码)
- ZOJ-1610- Count the Colors(端点染色,Lazy算法)
- android Cache——内存基本原理和机制管理
- Unity3d之利用Mesh绘制几何图形实现