如何计算 Android 上 ScrollView 内的 GridView 所需的高度?

2024-03-05

我在 ScrollView 内的 LinearLayout 内有一个 GridView,用于从服务器中分页数据。 GridView 下方是一个用于加载更多数据的按钮。我的 GridView 的最终高度将大于屏幕。如果我将 GridView 的高度设置为wrap_content 或parent_fill,它会将自身调整为屏幕上可用的确切高度,并且根本不滚动,从而裁剪掉多余的行。如果我明确地将layout_height设置为较大的值,例如1000dip,则滚动行为正常,但是我无法先验地预测滚动视图的最终高度。

如何以编程方式确定 GridView 所需的高度以获得所需的行为?

下面是我的布局。正如你所看到的,我将高度设置为 1000dip,但这是假的,我需要自动/以编程方式设置该值:

        <ScrollView
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true"        
    android:layout_weight="1"       
    >   
        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"    
            >

            <GridView xmlns:android="http://schemas.android.com/apk/res/android" 
                android:id="@+id/grid"
                android:layout_width="fill_parent" 
                android:layout_height="1000dip"
                android:columnWidth="70dp"
                android:numColumns="auto_fit"
                android:verticalSpacing="0dp"
                android:horizontalSpacing="0dp"
                android:stretchMode="columnWidth"
                android:gravity="center"
                android:background="#000000"
                android:layout_weight="1"
            />
            <Button
            android:id="@+id/load_more"
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content"
            android:text="Load More Foo" 
            />
        </LinearLayout>
    </ScrollView>

如果有人需要的话,这是一种方法。有点黑客行为,但确实有效。您必须将 GridView 初始设置为足够大以容纳所有视图(例如 10000dip)

final GridView imageContainer = // your GridView
imageContainer.getViewTreeObserver().addOnGlobalLayoutListener( new OnGlobalLayoutListener() 
            {
            @Override
            public void onGlobalLayout() 
                {
                imageContainer.getViewTreeObserver().removeGlobalOnLayoutListener( this );
                View lastChild = imageContainer.getChildAt( imageContainer.getChildCount() - 1 );
                imageContainer.setLayoutParams( new LinearLayout.LayoutParams( LayoutParams.FILL_PARENT, lastChild.getBottom() ) );
                }
            });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何计算 Android 上 ScrollView 内的 GridView 所需的高度? 的相关文章

  • 可以挂载未加密的 obb 但出现加密错误 21

    这与 kitkat bug 无关 我正在 4 4 2 中测试 我可以毫无问题地挂载 obb 文件 问题是当尝试对加密的 obb 执行相同操作时 我在 Windows 中使用 jobb 如下 jobb d my folder o exp ob
  • ListView 和 CursorAdapter 对于大量数据的性能问题

    我在 sqlite 表中有大约 4k 行 表有 7 列 我用自己的 CursorAdapter 创建了工作 ListView 查询是这样的SELECT FROM table ORDER BY column DESC 表有第一列 id INT
  • OpenGL ES 2.0 中的透明对象

    所以我一直在 Android 上使用 OpenGL ES 2 0 但现在遇到了一个我无法解决的问题 提前道歉 看来我还不能发布两个以上的链接 所以我把我的三张图片放在 Photobucket 相册中 我正在尝试创建一个由透明区域 彩色玻璃
  • 浮动操作按钮动画

    当 fab 出现时 它使用动画中的比例进行动画处理 当它隐藏时 它使用向外扩展动画 因此 它是一个缩小和缩小的动画 这个动画要怎么制作呢 从 Zielony 的回答来看 我完全按照我想要的方式制作了它 下面是正确应用效果的代码 scale
  • Android 线程和处理程序不工作

    我最近重构了一个旧项目 发现无论我做什么 特定部分都不再需要正常运行 本质上 我有一个带有 TextView 的 Activity 该视图按时间间隔从同一类中调用的线程更新 暂停是通过 Thread sleep 完成的 并且使用 Handl
  • react-native-camera (android): takePictureAsync() 抛出错误

    从react native camera调用takePictureAsync 后 我收到此错误 framesToPop 1 nativeStackAndroid userInfo null message Preview is paused
  • 从布局中添加和删除视图

    如何从布局中添加和删除视图 我是这样做的 ViewManager entry getParent removeView entry
  • eclipse 找不到我的 sdk 文件夹

    我已经在 Windows 7 上的 eclipse helios 上安装了 android sdk 和 adt 插件 但是 当我进入首选项时 我在定位 sdk 位置时遇到了问题 我的 SDK 位置是 C Program Files Andr
  • 使用 android-async-http (loopj) 发布 JSON/XML

    我在用android async http http loopj com android async http 并且真的很喜欢它 我在发布数据时遇到了问题 我必须按照以下格式将数据发布到 API
  • 如何将 Material 按钮与其他 UI 元素对齐

    我无法将默认材质按钮与 UI 的其他元素对齐 事实上 我已经查看了 Android 源代码 按钮的背景包含插图 以便能够绘制阴影并处理单击时按钮的高度
  • 丢弃对 OpenGL 中的程序性能有影响吗?

    我正在读书this http code google com p gdc2011 android opengl wiki TalkTranscript文章 作者写道 以下是如何通过两个简单的步骤在每个平台上编写高性能应用程序 遵循最佳实践
  • 当我滚动 gridview 时图像发生变化

    GridView 从 URL 加载图像 当我滚动 gridview 时 更多图像机会 如何修复它 我尝试过 imageAdapter notifyDataSetChanged gridView invalidateViews 我还没有找到这
  • AWS Cognito-获取带有ID的用户信息

    有没有什么方法可以获取 AWS Cognito 池 在 Android 上 中未登录的用户的信息 并知道他的 ID 我尝试了该代码 AppHelper getPool getUser username getDetailsInBackgro
  • 如何在phonegap中同时使用相机API选择多个图像?

    如何同时选择或拾取多个图像phonegap camera API使用时Camera DestinationType FILE URI 我一次只能选择一张图像 我可以使用以下命令在 SD 卡中选择多个文件 包括 txt pdf this ht
  • 从最近打开的应用程序中打开 Android 中的旧活动?

    我有 4 个活动 Launcher MainActivity SingleTask NotificationActivity ExampleActivity 当用户点击通知时 通知活动然后打开示例活动并完成通知活动 当我按下回键时主要活动打
  • Web 服务凭证 - OpenID/Android AccountManager?

    我正在构建一个网络服务 并想使用用户的谷歌帐户凭据 该服务在 GAE 上运行 并将有一个 Web 客户端和一个 Android 本机客户端 这是我第一次尝试类似的事情 我一直在阅读有关 OpenID 和 Android AccountMan
  • 如何保存/加载 BigInteger 数组

    我想保存 加载BigInteger数组传入 传出 SharedPreferences 如何做呢 例如对于以下数组 private BigInteger dataCreatedTimes new BigInteger 20 Using Gso
  • 获取 Blob 图像并将该图像转换为 Bitmap 图像

    我正在从数据库中获取 blob 格式的图像 我想将其转换为位图图像 我用来将位图转换为 Blob 的代码放在下面 但是请告诉我如何反转它 ByteArrayOutputStream boas new ByteArrayOutputStrea
  • Firebase 附加权限。是否要求用户接受

    我目前正在致力于将 Firebase Analytics 集成到我的 Android 应用程序中 我遇到的问题是 Firebase 添加了一些新权限 这些权限是 permission WAKE LOCK com google android
  • INSTALL_FAILED_NO_MATCHING_ABIS:无法提取本机库,res = -113设备

    当我在 android 8 0 设备中执行 android 项目时 我收到错误 INSTALL FAILED NO MATCHING ABIS 无法提取本机库 res 113 错误图像 https i stack imgur com 3kb

随机推荐

  • CSS 比较运算符

    我需要定位占其父 div 80 以上的 div 作为进度条 考虑到我们可以瞄准specificCSS 宽度 data width 80 我们如何瞄准比较 这做到了not在 Firefox 或 Chrome 中工作 data width gt
  • Powershell / Perl:将多个 CSV 文件合并为一个?

    我有以下 CSV 文件 我想将它们合并到一个 CSV 中 01 csv apples 48 12 7 pear 17 16 2 orange 22 6 1 02 csv apples 51 8 6 grape 87 42 12 pear 2
  • 如何在Windows系统上安装geckodriver

    我正在尝试安装 webdriver 为了打开 Firefox 我需要安装 geckodriver 并将其安装在正确的路径中 首先 安装 geckodriver 的下载链接仅允许您安装非可执行文件 那么有没有办法让它成为可执行文件呢 其次 我
  • 无法探测视频 laravel ffmpeg

    我一直在关注这个教程https github com pascalbaljetmedia laravel ffmpeg https github com pascalbaljetmedia laravel ffmpeg我正在尝试调整我的视频
  • 具有相同名称的多个隐藏输入,始终检索最后一个输入[重复]

    这个问题在这里已经有答案了 foreach graphEdge as graphNode echo div class form check mb 3 div
  • 使用 Camel 的表达式语言获取并格式化昨天的日期

    我在 Camel 的路径中使用日期 fileName date now dd MM yyyy 但我现在需要的是 1天 那可能吗 嗯 不直接 简单语言中的 date 对象只能获取当前时间 或者您放置在标头中的某个时间值 您可以在 java 或
  • boost::thread 并创建它们的池!

    boost thread 类有一个默认构造函数 它给出 Not a thread 那么什么是 boost thread t1 适合什么 我可以给它一个稍后在代码中执行的函数吗 另一个问题 我正在尝试编写一个具有分阶段架构 SEDA 的小服务
  • Crossfilter过滤器不过滤(dc.js)

    我试图在交叉过滤器中使用过滤器 但是不行 这是 JSBin http jsbin com liwiru 8 edit 这是最相关的代码 var userDimension data dimension function d return d
  • Android 中用户不活动?

    我想查看我的 Android 应用程序中的用户不活动情况 如果用户在 1 分钟内没有执行任何活动 那么该应用程序应该离开屏幕 这意味着它应该显示一个对话框 要求输入密码 之前存储在共享首选项中 如果密码与活动应该再次开始 有人可以帮我解决这
  • 如何在响应和请求中添加新方法

    我想在node js的响应和请求中添加新方法 我怎样才能更有效地做到这一点 我不明白这是如何在express js中完成的 作为 JavaScript 有很多方法可以做到这一点 在我看来 对于express来说最合理的模式是将函数添加到早期
  • Flask-Login 不适用于同一域中的两个应用程序

    我一直在使用 Flask Login
  • 反思:如何获得泛型方法? [复制]

    这个问题在这里已经有答案了 可能的重复 如何使用反射调用泛型方法 https stackoverflow com questions 232535 how to use reflection to call generic method 通
  • Laravel - 服务提供者中的会话变量为空

    我正在尝试使用以下命令与所有视图共享会话值AppServiceProvider class In the boot 函数我说 view gt share key Session get key 但是 值是null 可能是什么问题 在控制器中
  • css 过渡:当用户设置了辅助功能选项“减少运动”时,触发过渡结束不会触发

    本周我一直在寻找我在网页中引入的 错误 我转向 CSS 过渡 具体来说 我用它来打开和关闭菜单 一位用户报告说 一旦打开菜单 他就无法关闭菜单 他有两次安装都出现了这个问题 而且我没有收到任何报告 我终于找到了问题的原因 操作系统的辅助功能
  • 类列表的空引用异常

    我是编程新手 在使用另一个类的列表属性创建一个类然后在 main 中访问它时遇到了问题 尝试将项目添加到列表后 我收到异常 对象引用未设置为对象的实例 我在运行时收到此错误 我确实知道 List 引用为空 但我试图理解为什么它为空以及如何解
  • Salesforce OAuth 2.0 API:使用在普通浏览器中启动的授权 URL 获取刷新令牌

    在这个页面中 提到了refresh token仅针对不以 HTTPS 开头或指向 salesforce 的回调 URL 返回 https na5 salesforce com help doc en remoteaccess oauth u
  • 列出具有最小顺序的文件

    我的目录中有一些文件如下 不一定已排序 A 10 A 20 A 30 B 10 B 30 C 10 C 20 D 20 D 30 E 10 E 20 E 30 10 20 and 30是的序列号A B C D E分别 我只想选择那些具有最小
  • 如何将 shm pixmap 与 xcb 一起使用?

    我尝试学习如何使用 xcb 库中的共享内存像素图 你们中有人有这方面的经验并想分享示例代码和 或信息吗 这会很有帮助 Thanks 经过一些研究 我发现了如何在 xcb 中使用共享内存像素图 这是我的测试代码 include
  • Android 目标:未安装

    我无法奔跑ionic run android 我检查后cordova requirements 表明 Android target Not installed Android SDK not found How should I solve
  • 如何计算 Android 上 ScrollView 内的 GridView 所需的高度?

    我在 ScrollView 内的 LinearLayout 内有一个 GridView 用于从服务器中分页数据 GridView 下方是一个用于加载更多数据的按钮 我的 GridView 的最终高度将大于屏幕 如果我将 GridView 的