(转)Android中ScrollView与ListView共用问题的解决方案
来源:互联网 发布:淘宝职业女装 编辑:程序博客网 时间:2024/05/29 18:20
需要在一个界面里放置超出屏幕容量的内容,需要用到ScrollView实现滚屏;想要将内容以列表的形式动态展示,需要用到ListView。但是如果想要在一个界面中使用多个列表,并实现整体滚屏,那么ScrollView和ListView共用的时候会出现UI问题,无法实现想要的效果。具体原因就不清楚了,至少在2.1以下是有问题的,应该算是Android的一个bug吧。
其实要实现这样的一个效果也并不难,不过不能直接使用ListView,而需要自己定义一个列表布局,并实现其Adapter设置相关的方法来实现。于是我实现了一个继承自LinearLayout的类LinearLayoutForListView,并添加Adapter相关方法,实现这一功能。
package com.mozitek.epg.android.widget;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
public class LinearLayoutForListView extends LinearLayout {
private ListAdapter adapter;
private OnClickListener onClickListener = null;
private OnTouchListener onTouchListener = null;
/**
* 绑定布局
*/
public void bindLinearLayout() {
int count = adapter.getCount();
for (int i = 0; i < count; i++) {
View v = adapter.getView(i, null, null);
//v.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
//LayoutParams.WRAP_CONTENT));
v.setOnTouchListener(this.onTouchListener);
v.setOnClickListener(this.onClickListener);
v.setId(i);
addView(v, i);
}
Log.v("countTAG", "" + count);
}
public LinearLayoutForListView(Context context) {
super(context);
}
public LinearLayoutForListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* 获取Adapter
*
* @return adapter
*/
public ListAdapter getAdpater() {
return adapter;
}
/**
* 设置数据
*
* @param adpater
*/
public void setAdapter(ListAdapter adpater) {
this.adapter = adpater;
bindLinearLayout();
}
/**
* 获取点击事件
*
* @return
*/
public OnClickListener getOnclickListner() {
return onClickListener;
}
/**
* 设置点击事件
*
* @param onClickListener
*/
public void setOnclickLinstener(OnClickListener onClickListener) {
this.onClickListener = onClickListener;
}
public OnTouchListener getOnTouchListener() {
return onTouchListener;
}
public void setOnTouchListener(OnTouchListener onTouchListener) {
this.onTouchListener = onTouchListener;
}
}
其实要实现这样的一个效果也并不难,不过不能直接使用ListView,而需要自己定义一个列表布局,并实现其Adapter设置相关的方法来实现。于是我实现了一个继承自LinearLayout的类LinearLayoutForListView,并添加Adapter相关方法,实现这一功能。
package com.mozitek.epg.android.widget;
import android.content.Context;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
public class LinearLayoutForListView extends LinearLayout {
private ListAdapter adapter;
private OnClickListener onClickListener = null;
private OnTouchListener onTouchListener = null;
/**
* 绑定布局
*/
public void bindLinearLayout() {
int count = adapter.getCount();
for (int i = 0; i < count; i++) {
View v = adapter.getView(i, null, null);
//v.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
//LayoutParams.WRAP_CONTENT));
v.setOnTouchListener(this.onTouchListener);
v.setOnClickListener(this.onClickListener);
v.setId(i);
addView(v, i);
}
Log.v("countTAG", "" + count);
}
public LinearLayoutForListView(Context context) {
super(context);
}
public LinearLayoutForListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
/**
* 获取Adapter
*
* @return adapter
*/
public ListAdapter getAdpater() {
return adapter;
}
/**
* 设置数据
*
* @param adpater
*/
public void setAdapter(ListAdapter adpater) {
this.adapter = adpater;
bindLinearLayout();
}
/**
* 获取点击事件
*
* @return
*/
public OnClickListener getOnclickListner() {
return onClickListener;
}
/**
* 设置点击事件
*
* @param onClickListener
*/
public void setOnclickLinstener(OnClickListener onClickListener) {
this.onClickListener = onClickListener;
}
public OnTouchListener getOnTouchListener() {
return onTouchListener;
}
public void setOnTouchListener(OnTouchListener onTouchListener) {
this.onTouchListener = onTouchListener;
}
}
- (转)Android中ScrollView与ListView共用问题的解决方案
- Android中ScrollView与ListView共用问题的解决方案
- Android中ScrollView与ListView共用问题的解决方案
- Android-GridView与ScrollView共用的冲突问题(类似ListView)
- ScrollView嵌套ListView的问题与解决方案
- 《转》ScrollView中嵌套ListView的解决方案
- android中scrollview嵌套listview的问题
- Android在ScrollView中嵌套ViewPager以及ListView的可能出现的问题以及解决方案
- Android学习 之 问题&解答 ScrollView中嵌套ListView时显示不全的简便解决方案
- Android学习 之 问题&解答 ScrollView中嵌套ListView时显示不全的简便解决方案
- Android ScrollView 嵌套ListView与GridView的最终解决方案
- Android开发之ScrollView中嵌套ListView的解决方案
- Android中ScrollView嵌套ListView只显示一行的解决方案
- Android开发之ScrollView中嵌套ListView的解决方案
- Android开发之ScrollView中嵌套ListView的解决方案
- ScrollView嵌套ListView冲突问题的解决方案
- ScrollView嵌套ListView问题的解决方案
- ScrollView嵌套ListView冲突问题的解决方案
- C++第九周【任务二】定义Time类中的<<和>>运算符重载,实现时间的输入输出
- static_cast 、dynamic_cast、const_cast 和 reinterpret_cast
- 水平垂直居中控制方法
- sql sever2005忘记链接密码
- SAP 打note
- (转)Android中ScrollView与ListView共用问题的解决方案
- uboot copy_from_nand代码详解
- 彻底删除MYSQL的方法
- (5)ThreadLocal类及应用技巧---- 线程范围内共享变量
- fasync方法事例
- js模拟预加载
- VLC接收网络串流缓冲时间的计算
- C++中的const和static
- 关于GL_PROJECTION和GL_MODELVIEW的理解