ListView 和ScrollView共存问题(一)

原创 2013年12月02日 11:23:25

解决共存问题间断的研究了一些时间,对于两个控件的属性熟悉是最重要的


目前存在这个问题,输入法能够正确的顶起listview,但是点击listview的一个item,整个列表就会自动的滚动到底部,一开始以为是listview自己更新了数据,后来发现其实就是listview的一个属性的问题,这个属性的代码中进行控制才可以正确的显示


一开始在adapter中设置,监听position然后发现到最后一个了,就设置listview的

if (position == getInfos().size()-1) {
				((HaomsgInfoActivity)context).lv_sms_list.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_DISABLED);
}
这种情况显然不够完整,需要根据情况做这些处理,测试组提出问题后,就这块进行了重新处理,前提是少费事,少改动

是这么处理的:

if (scrollState== SCROLL_STATE_FLING) {
					lv_sms_list.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_DISABLED);
				}
lv_sms_list.setOnScrollListener(new OnScrollListener() { //全部代码
			@Override
			public void onScrollStateChanged(AbsListView view, int scrollState) {
				invokeInput();
				if (!noNeedLoad) {  //检测如果不是向下滑动,而是向上滑动
					if (scrollState== SCROLL_STATE_FLING) {   //滑动静止再去加载不然会执行多遍 2013-8-28 11:24 yang
						// 加载分页 ,不用状态锁的话可以考虑线程队列
						if (!isLoadingPage && view.getFirstVisiblePosition() == 0) {
							Log.v("aaa", "!isLoadingPage = "+!isLoadingPage);
							Log.v("aaa", "view.getFirstVisiblePosition() = "+view.getFirstVisiblePosition());
							if (view.getLastVisiblePosition() + 1 == view.getCount()) {
								// 末尾也在当前页则不用加载分页了,否则在select后末尾项看不全
								Log.v("aaa", "view.getLastVisiblePosition() + 1 = "+(view.getLastVisiblePosition() + 1));
								Log.v("aaa",  "view.getCount() = "+view.getCount());
							} else{
								getNetMessage(type);
								getNewPageDate(currentIndex, pageSize,REFRESH_LISTVIEW_ADD_NEWPAGE);
							}
						}
					}
				}
				if (scrollState== SCROLL_STATE_FLING) {
					lv_sms_list.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_DISABLED);
				}
			}





设置了的自动滚动属性之后,以后不管怎么改都不可以改过来,

=================================================

et_send_content.setOnFocusChangeListener(new OnFocusChangeListener() { //监听焦点变化也就是键盘的弹起
			@Override
			public void onFocusChange(View v, boolean hasFocus) {
				if (hasFocus&&getInputManager().isActive()) {
					lv_sms_list.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
					adapter.notifyDataSetChanged();
				}
			}
		});


不过这种方法不管用,焦点变化了改变listview但是滚动不及时


=================================================


et_send_content.setOnTouchListener(new OnTouchListener() {
			@Override
			public boolean onTouch(View v, MotionEvent event) {
				if (event.getAction()==MotionEvent.ACTION_DOWN) {
					lv_sms_list.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
				}
				return false;
			}
		});这里是设置ListView的滑动属性为总是滑动,因为点击了输入框,键盘要被弹起来了,这个时候listView就要被滑动了


主题目的,1) listview滑动静止设置自动滚动属性为不可滑动  2)点击edit开始键入字符时listview自动被顶起 

注意:监听焦点变化,不如监听点击(点击相应时间更早,比焦点更快的预处理)

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android 解决ListView 和 ScrollView 共存冲突的问题

Android 解决ListView 和 ScrollView 共存冲突的问题 2010-08-13 15:11 by Terry_龙, 18949 阅读, 8 评论, 收藏, 编辑 ...
  • yyqasg
  • yyqasg
  • 2013-10-12 16:19
  • 1281

解决ListView和ScrollView共存问题

我们在开发中往往遇到一些需求,需要ListView和ScrollView一同使用,但是android并不推荐我们这样做,那么我们就干脆不用ListView,写一个LinearLayout代替ListV...

ListView或GridView与ScrollView共存,高度显示问题

自定义ListView(或GridView),重写里面的OnMeasure()方法重新计算高度 public class MyListView extends ListView { public...
  • YK_ing
  • YK_ing
  • 2013-08-29 14:48
  • 1333

Android 解决ListView 和 ScrollView 共存冲突的问题(另一种解决方案)

ListView 与 ScrollView 同在一个界面用头脑想想都觉得不大可能这样做,但还真的有美工这样做了,有点郁闷~!!沟通无果,解决之~~~~!初期还真没啥头绪,Google 一下看到有很多同...

android ScrollView和ListView共存导致重复调用getview()的问题

android ScrollView和ListView共存导致重复调用getview()的问题

Android 解决ListView 和 ScrollView 共存冲突的问题

Android 解决ListView 和 ScrollView 共存冲突的问题 2010-08-13 15:11 by Terry_龙, 15694 阅读, 8 评论, 收藏, 编辑 Li...

Android 解决ListView 和 ScrollView 共存冲突的问题

ListView 与 ScrollView 同在一个界面用头脑想想都觉得不大可能这样做,但还真的有美工这样做了,有点郁闷~!!沟通无果,解决之~~~~!初期还真没啥头绪,Google 一下看到有很多同...

Android 解决ListView 和 ScrollView 共存冲突的问题

ListView 与 ScrollView 同在一个界面用头脑想想都觉得不大可能这样做,但还真的有美工这样做了,有点郁闷~!!沟通无果,解决之~~~~!初期还真没啥头绪,Google 一下看到有很多同...

Android ScrollView与ListView,GridView共存冲突解决方案

转载自:http://www.2cto.com/kf/201210/159540.html ListView或者GridView嵌套在ScrollView中:嵌套使用时,会出现ListV...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)