`
yunlonglove
  • 浏览: 242731 次
社区版块
存档分类
最新评论

android 解决ScrollView与ListView的冲突(TableLayout+ScrollView)

 
阅读更多

首先对于ScrollView和ListView这两个控件发生冲突我就不过多解释了,用过的同学们都知道,

问题:ListView在ScrollView显示一行半,解决方法:http://jackxlee.blog.51cto.com/2493058/666475这里有解决办法.不过实现后会发现,效果不是很友好,首先由别的界面跳转至该界面的时候,listview显示的不正常,

第一:显示顺序不对。第二:scrollView显示不再最上面,而是现在在listview的中间,这点肯定不被认可.解决办法:scrollTo(0,0);不过这个方法必须要用handler实现:

mHandler.post(new Runnable() {

@Override
public void run() {
((ScrollView)findViewById(R.id.main_sv)).scrollTo(10, 10) ;
}
});

实现后结果会发现:在listview 初始化完以后,屏幕会一闪,其实就是由listview 的中间再次scrollTo顶部。效果很不友好.

本人正在开发新浪微博一些应用,新浪微博的评论列表显示的时候根本没有遇到上述情况,也许是自己比较笨吧,不知道该怎么实现,不过之前做过简单的动态Taable的应用,想想就一个一个生成吧,麻烦也好,起码可以实现.

下面是代码片段:

public void tableList(Context context, ArrayList<BlogInfo> blogInfos) {

		TableRow.LayoutParams layoutParams = new TableRow.LayoutParams(
				android.widget.TableRow.LayoutParams.FILL_PARENT,
				android.widget.TableRow.LayoutParams.FILL_PARENT);
		AsyncImageLoader asyncImageLoader = new AsyncImageLoader();
		View convertView = null;
		for (int i = 0; i < blogInfos.size(); i++) {
			TableRow tableRow = new TableRow(context);
			final ViewHolder holder = new ViewHolder();

			convertView = LayoutInflater.from(context).inflate(
					R.layout.blogdetail_item, null);
			holder.imageLog = (ImageView) convertView
					.findViewById(R.id.iv_blogdetail_item);
			holder.textName = (TextView) convertView
					.findViewById(R.id.tv_blogtetail_item_name);
			holder.textComment = (TextView) convertView
					.findViewById(R.id.tv_blogdetail_item_content);
			holder.textTime = (TextView) convertView
					.findViewById(R.id.tv_blogdetail_item_time);

			holder.textName.setText(blogInfos.get(i).Title);
			holder.textComment.setText(blogInfos.get(i).Content);
			holder.textTime
					.setText(MyUtil.convertTime(blogInfos.get(i).Time, 1));

			Drawable drawable = asyncImageLoader.loadDrawable(
					blogInfos.get(i).LogImage, new ImageCallback() {
						@Override
						public void imageLoaded(Drawable imageDrawable,
								String imageUrl) {
							if (imageDrawable != null) {
								holder.imageLog.setImageDrawable(imageDrawable);
							} else {
								holder.imageLog
										.setImageResource(R.drawable.u6_normal);
							}

						}
					});
			if (drawable != null) {
				holder.imageLog.setImageDrawable(drawable);
			}

			tableRow.addView(convertView, layoutParams);
			tb_blogdetail.addView(tableRow);
		}

	}


其实很简单,就是创建了一个View作为TableRow,把数据一个一个的填充进去,获取有些同学会发现这个效率很低,早N年前google就提出来了要创建一个类ViewHolder,用于减少findbyId的使用,可是我一用就报错,错误信息如下:

The specified child already has a parent.You must call removeView() on the child's parent first.

这个应该可以提高性能,本人水平有限,知道的朋友麻烦解释下.

下面效果如图:

Listview 加载中... Listview加载完毕. 下拉Listview.

TableLayout+ScrollView 很好的解决了Listview和ScrollView之间的冲突.虽说我写的性能不高,但是显示这些内容足够了,效果如同新浪微博一样,呵呵,就说这么多了。有什么不足之处,或更好的解决方案:请您留吉言.



分享到:
评论

相关推荐

    界面布局之表格布局TableLayout+TableRow(代码)

    - 如果表格需要滚动,可以将TableLayout放入ScrollView或HorizontalScrollView中,但要注意可能产生的冲突和滚动性能问题。 总结,TableLayout和TableRow是Android布局系统中的实用工具,特别适合创建简单表格形式...

    Android程序开发之ListView实现横向滚动(带表头与固定列)

    标题所提到的"Android程序开发之ListView实现横向滚动(带表头与固定列)"是针对这种需求的一个解决方案,即在ListView中实现横向滚动,同时保持左侧列(通常是表头)固定,顶部表头在向下滚动时也始终保持可见。...

    listview 分页,tablehost 实现,滑动手势

    此外,对于滑动手势,我们需要处理好冲突,确保滑动操作不会与ListView的默认滑动冲突。 综上所述,实现ListView分页、TableHost的类似QQ分组策略以及滑动手势,不仅需要掌握ListView和TableLayout的基本用法,还...

    ViewPager+Fragment左右滑动+上下滑动不冲突

    当ViewPager中的Fragment包含可滚动的内容(如ScrollView或ListView)时,可能会出现上下滑动与ViewPager的左右滑动冲突。为了解决这个问题,我们需要自定义一个ViewPager,覆盖其`onInterceptTouchEvent...

    tablelayout 动态

    8. **TableLayout与ScrollView** 如果TableLayout的内容超过屏幕,可以将TableLayout放在ScrollView内,以实现滚动查看全部内容。 9. **权重分配** 表格的列宽可以通过权重分配,使用`android:layout_weight`属性...

    Android 自定义可上下左右滑动table

    在Android开发中,自定义视图是提升用户体验和实现独特设计的重要手段。标题"Android 自定义可上下左右滑动table"指向的就是一个专门为Android平台设计的定制化表格控件,它不仅支持垂直滚动(上下滑动),还支持...

    android开发揭秘PDF

    4.2.18 卷轴视图(ScrollView) 4.2.19 进度条(ProgressBar) 4.2.20 拖动条(SeekBar) 4.2.21 状态栏提示(Notification、NotificationManager) 4.2.22 对话框中的进度条(ProgressDialog) 4.3 界面布局 4.3.1 垂直线性...

    Android开发技巧合集.doc

    解决了ListView与ScrollView同时使用时可能出现的冲突问题。通过重写ListView的方法来实现两者的兼容性。 以上就是关于Android开发的一些基础知识点和技术技巧,希望对你有所帮助。在实际开发过程中,还需要不断...

    Android入门到精通源代码.

    《Android从入门到精通》 第1章 初识Android 1.1 什么是Android 1.1.1 移动信息设备分类 1.1.2 Open Handset Alliance和 Android 1.2 Android简介 1.2.1 Andriod的历史 1.2.2 Andriod的未来 1.2.3 Andriod平台的技术...

    2015最新Android基础入门教程.pdf

    Android布局方式包括线性布局LinearLayout、相对布局RelativeLayout、表格布局TableLayout、帧布局FrameLayout、网格布局GridLayout以及绝对布局AbsoluteLayout。这六大布局为开发者提供了多样化的界面布局方式。 ...

    Android-一个看起来像TableView的RecyclerView可以同时水平和垂直滚动一个固定的标题

    5. **嵌套滚动**:Android的NestedScrolling机制使得RecyclerView能够与其他可滚动视图(如ScrollView)无缝协作。在这个项目中,可能利用了NestedScrollView或者NestedHorizontalScrollView来实现标题区域的滚动。 ...

    《Android应用开发揭秘》附带光盘代码.

    《Android应用开发揭秘》全部实例源代码,配合《Android应用开发揭秘》使用 前言  第一部分 准备篇  第1章 Android开发简介  1.1 Android基本概念  1.1.1 Android简介  1.1.2 Android的系统构架  1.1.3 ...

    android开发demo集合

    2、TableLayout 3、FrameLayout 霓虹灯效果 4、RelativeLayout 梅花效果 5、自定义view跟着触点走的小球 6、 ListView 列表视图 7、WebView web视图 8、ToggleButton 动态布局效果 9、AnalogClock 、 DigitalClock...

    Android开发案例驱动教程 配套代码

    8.4.1 Android线程应用中的问题与分析 164 8.4.2 Message和MessageQueue 169 8.4.3 Handler 169 8.4.4 Looper和HandlerThread 172 本章小结 178 第9章 Activity和Intent 179 9.1 Activity 179 9.1.1 创建...

    android初学者入门项目

    2、TableLayout 3、FrameLayout 霓虹灯效果 4、RelativeLayout 梅花效果 5、自定义view跟着触点走的小球 6、 ListView 列表视图 7、WebView web视图 8、ToggleButton 动态布局效果 9、AnalogClock 、 DigitalClock...

    Android应用开发揭秘pdf高清版

    《Android应用开发揭秘》内容全面,不仅详细讲解了Android框架、Android组件、用户界面开发、游戏开发、数据存储、多媒体开发和网络开发等基础知识,而且还深入阐述了传感器、语音识别、桌面组件开发、Android游戏...

    《Android应用开发揭秘》源码

     4.2.18 卷轴视图(ScrollView)  4.2.19 进度条(ProgressBar)  4.2.20 拖动条(SeekBar)  4.2.21 状态栏提示(Notification、NotificationManager)  4.2.22 对话框中的进度条(ProgressDialog)  4.3 界面布局  ...

    android 开发技巧

    Android开发技巧涵盖了Android开发过程中的多种实践和建议,其中包括对Android常用类库的说明、文件系统与应用程序架构的理解、以及各个组件和控件的具体应用。以下是对这些知识点的详细解释: 1. ANDROID常用类库...

    Android基础知识详解

    Android的系统架构 6 一、应用程序 6 二、应用程序框架 6 三、Android Runtime 7 四、系统库 7 五、Linux 内核 8 Webkit浏览器引擎简介 9 Dalvik虚拟机简介 11 什么是Dalvik虚拟机 11 Dalvik和Android系统 11 Dalvik...

Global site tag (gtag.js) - Google Analytics