Android之ScrollView嵌套ListView和GridView冲突的解决方法
2023-06-13 09:15:04 时间
那么里面的ScrollView高度计算就会出现问题。我们也就无法得到想要的效果。
核心解决方案:重写ListView或者GridView的OnMesure方法。
复制代码代码如下:
核心解决方案:重写ListView或者GridView的OnMesure方法。
publicclassMyListViewextendsListView{
publicMyListView(Contextcontext){
super(context);
}
publicMyListView(Contextcontext,AttributeSetattrs){
super(context,attrs);
}
publicMyListView(Contextcontext,AttributeSetattrs,intdefStyle){
super(context,attrs,defStyle);
}
@Override
protectedvoidonMeasure(intwidthMeasureSpec,intheightMeasureSpec){
intexpandSpec=MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec,expandSpec);
}
}
GridView
publicclassMyGridViewextendsGridView{
privatebooleanhaveScrollbar=true;
publicMyGridView(Contextcontext){
super(context);
}
publicMyGridView(Contextcontext,AttributeSetattrs){
super(context,attrs);
}
publicMyGridView(Contextcontext,AttributeSetattrs,intdefStyle){
super(context,attrs,defStyle);
}
/**
*设置是否有ScrollBar,当要在ScollView中显示时,应当设置为false。默认为true
*
*@paramhaveScrollbars
*/
publicvoidsetHaveScrollbar(booleanhaveScrollbar){
this.haveScrollbar=haveScrollbar;
}
@Override
protectedvoidonMeasure(intwidthMeasureSpec,intheightMeasureSpec){
if(haveScrollbars==false){
intexpandSpec=MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE>>2,MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec,expandSpec);
}else{
super.onMeasure(widthMeasureSpec,heightMeasureSpec);
}
}
}
相关文章
- 测试android sdk是否安装成功,配置Android SDK
- android sdk安装过程,图文详解Android 3.0 SDK安装教程
- android 定时器实例,Android定时器和Handler用法实例分析
- android activitymanager 系统api_Android view
- 【Android Gradle 插件】Module 目录下 build.gradle 配置文件 ( plugins 闭包代码块中引入插件 | PluginAware#apply 方法引入插件 )
- 【ijkplayer】编译 Android 版本的 ijkplayer ⑤ ( 执行 init-android-libyuv.sh | 执行 init-android-soundtouch.sh )
- 【Android Gradle 插件】自定义 Gradle 任务 ③ ( Gradle 自定义任务创建方法 Project#task 函数 | Task#doFirst 函数用法 )
- Android设置透明效果的三种方法详解手机开发
- Android中android:visibility的3中属性的剖析详解手机开发
- mac os 下创建 android avd 后启动报找不到 avd ini 文件 问题解决方法
- android中TabHost的图标(48×48)和文字叠加解决方法
- android帮助文档打开慢的三种解决方法
- Android在其他线程中更新UI线程的解决方法
- Android动态添加View的问题解决方法
- android中ListView多次刷新重复执行getView的解决方法
- android将搜索引擎设置为中国雅虎无法搜索问题解决方法
- 在android中增加curl的解决方法
- android多点触摸图片缩放的具体实现方法
- WAC启动Android模拟器transfererror:Read-onlyfilesystem错误解决方法
- Android中代码运行指定Apk的简单方法
- android实现背景平铺的三种方法
- 过滤Android工程中多余资源文件的解决方法
- Android上使用ZXing识别条形码与二维码的方法