List View和ScrollView冲突的解决以及List View在Scroll View中计算高度
来源:互联网 发布:做外盘用什么软件原油 编辑:程序博客网 时间:2024/05/21 01:27
List View和ScrollView冲突的解决
这是MainActivity
package com.example.dispatchingevents;import android.app.Activity;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;import android.view.View.MeasureSpec;import android.view.View.OnTouchListener;import android.view.ViewGroup;import android.view.ViewGroup.LayoutParams;import android.widget.AbsListView;import android.widget.AbsListView.OnScrollListener;import android.widget.ArrayAdapter;import android.widget.ListView;import android.widget.ScrollView;public class MainActivity extends Activity {ScrollView scroll;ListView list;String[] books = { "A语言", "B语言", "C语言", "D语言", "E语言", "A1语言", "B1语言", "C1语言", "D1语言", "E1语言", "A2语言", "B2语言","C2语言", "D2语言", "E2语言", "A2语言", "B2语言", "C语言", "D语言", "E语言" };@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);scroll = (ScrollView) findViewById(R.id.scroll);list = (ListView) findViewById(R.id.list);ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, books);// 配置给listviewlist.setAdapter(adapter);setListViewHeight(list);list.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View arg0, MotionEvent arg1) {// TODO Auto-generated method stubscroll.requestDisallowInterceptTouchEvent(true);return false;}});list.setOnScrollListener(new OnScrollListener() {@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {// 计算第一条的索引加上当前页面能显示的listview的总条目的数量,计算出显示的最后一条的索引号int i = firstVisibleItem + visibleItemCount;if (i == totalItemCount) {// 如果scroll.requestDisallowInterceptTouchEvent(false);}}});}public void setListViewHeight(ListView listView) {ArrayAdapter listAdapter = (ArrayAdapter) listView.getAdapter();if (listAdapter == null) {return;}int totalHeight = 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);totalHeight += listItem.getMeasuredHeight();}ViewGroup.LayoutParams params = listView.getLayoutParams();params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1))+ listView.getPaddingTop() + listView.getPaddingBottom();int h = getWindowManager().getDefaultDisplay().getHeight();if (params.height > h / 2) {params.height = h / 2;}listView.setLayoutParams(params);}}@Overrideprotected void onSaveInstanceState(Bundle outState) {// TODO Auto-generated method stuboutState.putInt("prograss", 100);super.onSaveInstanceState(outState);}@Overrideprotected void onRestoreInstanceState(Bundle savedInstanceState) {savedInstanceState.getInt("prograss");super.onRestoreInstanceState(savedInstanceState);}}
0 0
- List View和ScrollView冲突的解决以及List View在Scroll View中计算高度
- 安卓scrollview和list view嵌套时的解决
- 重新计算ListView的高度,解决ScrollView和ListView两个View都有滚动的效果,在嵌套使用时解决冲突的问题
- 微信小程序计算scroll-view的高度
- Android list view inside a scroll view auto scroll issue,在ScrollView中嵌套ListView,当ListView数据多时,避免自动跳
- ====Scroll包裹的List View中监听Scroll
- 通用cocos lua scroll list view 框架进行中。。。
- List view 和 RichTextBox
- list view
- List View
- List View
- 在同一页面上显示List View和Detail View
- ScrollView嵌套Recycler View嵌套冲突解决
- requestDisallowInterceptTouchEvent解决子View和父View滑动的冲突
- 在ListView、ScrollView中动态存在高度不固定的View,高度显示异常
- ScrollView的子View高度match_parent无效 解决
- android在list view中如何action的实现
- 获取view的高度和宽度(在onCreate方法中)
- Linux vim IDE配置---基于Ubuntu 16.04
- SVM的matlab代码及SVM的多分类的作法
- 关联分析之Apriori学习笔记
- java ibatis 一对多查询
- webService调试
- List View和ScrollView冲突的解决以及List View在Scroll View中计算高度
- Shell 编写摘要 (一)
- 图片 二进制 之间转换
- solr的简单使用说明
- Windows gVim 7.4 安装YouCompleteMe插件
- java 5大框架
- C++模板类+嵌套类实例
- windows socket 非阻塞
- 阅读笑话及搞笑图片的app