手机
当前位置:查字典教程网 >编程开发 >安卓软件开发 >Android之ScrollView嵌套ListView和GridView冲突的解决方法
Android之ScrollView嵌套ListView和GridView冲突的解决方法
摘要:那么里面的ScrollView高度计算就会出现问题。我们也就无法得到想要的效果。核心解决方案:重写ListView或者GridView的On...

那么里面的ScrollView高度计算就会出现问题。我们也就无法得到想要的效果。

核心解决方案: 重写ListView或者GridView的OnMesure 方法。

复制代码 代码如下:

public class MyListView extends ListView {

public MyListView(Context context) {

super(context);

}

public MyListView(Context context, AttributeSet attrs) {

super(context, attrs);

}

public MyListView(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

}

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,

MeasureSpec.AT_MOST);

super.onMeasure(widthMeasureSpec, expandSpec);

}

}

GridView

复制代码 代码如下:

public class MyGridView extends GridView {

private boolean haveScrollbar = true;

public MyGridView(Context context) {

super(context);

}

public MyGridView(Context context, AttributeSet attrs) {

super(context, attrs);

}

public MyGridView(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

}

/**

* 设置是否有ScrollBar,当要在ScollView中显示时,应当设置为false。 默认为 true

*

* @param haveScrollbars

*/

public void setHaveScrollbar(boolean haveScrollbar) {

this.haveScrollbar = haveScrollbar;

}

@Override

protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

if (haveScrollbars == false) {

int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST);

super.onMeasure(widthMeasureSpec, expandSpec);

} else {

super.onMeasure(widthMeasureSpec, heightMeasureSpec);

}

}

}

【Android之ScrollView嵌套ListView和GridView冲突的解决方法】相关文章:

android实现listview分页的方法

android @override 报错解决方案

android ListView自动滚动方法

Android中实现EditText圆角的方法

Android 用SQLite实现事务的方法

Android笔记之:在ScrollView中嵌套ListView的方法

Android 九宫格的实现方法

Android开发:优化ListView实践解析

Android加载图片内存溢出问题解决方法

基于将Android工程做成jar包和资源文件的解决方法

精品推荐
分类导航