滚动视图内的 ExpandableListView

2024-03-23

在我的应用程序中,我想创建一个具有 ExpandableListView 和其下方的 CheckBox 的页面。

我的问题是我的 ExpandableListView 太大,导致 CheckBox 超出页面范围。

在较小的屏幕上根本不可见。

我尝试将 ExpandableListView 放入滚动视图中,但它不起作用。

有办法实现我的设计吗?

这是我的代码和屏幕截图。

XML代码:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/White" >

    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:fillViewport="true" >

        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" >

            <TextView
                android:id="@+id/textView1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentTop="true"
                android:layout_marginTop="15sp"
                android:text="In this page you can save a group of exercise under one routine."
                android:textColor="@color/Black"
                android:textSize="20sp" />

            <ExpandableListView
                android:id="@+id/instructionsExView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_below="@+id/textView1"
                android:layout_marginTop="15sp" >
            </ExpandableListView>

            <TextView
                android:id="@+id/textView2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_below="@+id/instructionsExView"
                android:layout_marginTop="15sp"
                android:text="If you want to open the instruction again check &apos;need help?&apos;"
                android:textColor="@color/Black"
                android:textSize="20sp" />

            <CheckBox
                android:id="@+id/checkInstructions"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentLeft="true"
                android:layout_below="@+id/textView2"
                android:layout_marginTop="16dp"
                android:checked="false"
                android:text="dont show again when opening the page"
                android:textColor="@color/Black" />

        </RelativeLayout>
    </ScrollView>

</RelativeLayout>

截屏:

EDIT:


在“onCreate”方法中,在“expListView.setAdapter(listAdapter)”之后写入:“setListViewHeight(expListView)”,然后为可扩展列表视图设置 OnGroupClickListener,如下所示:

expListView.setOnGroupClickListener(new OnGroupClickListener() {

        @Override
        public boolean onGroupClick(ExpandableListView parent, View v,
                int groupPosition, long id) {
            setListViewHeight(parent, groupPosition);
            return false;
        }
    });

使用方法:

private void setListViewHeight(ListView listView) {
    ListAdapter listAdapter = listView.getAdapter();
    int totalHeight = 0;
    for (int i = 0; i < listAdapter.getCount(); i++) {
    View listItem = listAdapter.getView(i, null, listView);
    listItem.measure(0, 0);
    totalHeight += listItem.getMeasuredHeight();
    }

    ViewGroup.LayoutParams params = listView.getLayoutParams();
    params.height = totalHeight
    + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
    listView.setLayoutParams(params);
    listView.requestLayout();
    }


    private void setListViewHeight(ExpandableListView listView,
    int group) {
    ExpandableListAdapter listAdapter = (ExpandableListAdapter) listView.getExpandableListAdapter();
    int totalHeight = 0;
    int desiredWidth = MeasureSpec.makeMeasureSpec(listView.getWidth(),
    MeasureSpec.EXACTLY);
    for (int i = 0; i < listAdapter.getGroupCount(); i++) {
    View groupItem = listAdapter.getGroupView(i, false, null, listView);
    groupItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED);

    totalHeight += groupItem.getMeasuredHeight();

    if (((listView.isGroupExpanded(i)) && (i != group))
    || ((!listView.isGroupExpanded(i)) && (i == group))) {
    for (int j = 0; j < listAdapter.getChildrenCount(i); j++) {
    View listItem = listAdapter.getChildView(i, j, false, null,
    listView);
    listItem.measure(desiredWidth, MeasureSpec.UNSPECIFIED);

    totalHeight += listItem.getMeasuredHeight();

    }
    }
    }

    ViewGroup.LayoutParams params = listView.getLayoutParams();
    int height = totalHeight
    + (listView.getDividerHeight() * (listAdapter.getGroupCount() - 1));
    if (height < 10)
    height = 200;
    params.height = height;
    listView.setLayoutParams(params);
    listView.requestLayout();

    }

现在你可以走了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

滚动视图内的 ExpandableListView 的相关文章

  • 序列化 ArrayList

    我正在尝试编写一个 Android 游戏 即使用户想要返回主菜单或者活动被系统终止 我也希望能够暂停游戏 onSaveInstanceState 似乎并没有给我很大的控制权来决定何时可以读回捆绑包 而且据我所知 捆绑包仅在短时间内有效 所以
  • Android NDK:断言失败:TARGET_PLATFORM 未定义

    使用 NDK r5b 时 当我使用以下命令在 jni 目录中进行构建时 NDK DIR ndk build 效果很好 但是当我切换到 r6b 只需以不同的方式设置 NDK DIR 并运行相同的命令时 我得到 usr local androi
  • 如何在 ImageButton 上显示文本?

    我有一个ImageButton我想在上面显示文本和图像 但是当我尝试使用模拟器时
  • python中的编码检测库[重复]

    这个问题在这里已经有答案了 这在某种程度上与我的问题有关here https stackoverflow com questions 2305997 unicodedecodeerror problem with mechanize 我处理
  • 如何在Android中创建类似架子的视图?

    如何在android中创建一个类似书架的视图 在任意行中显示多本书 此外 它应该具有像 Moon reader 应用程序那样的水平和垂直功能 我可以编写一个水平移动的架子视图 但它不能完全工作 我使用 xml 文件来查看包含图像 文本和按钮
  • Android view.animate() 第一次执行后工作方式不同且错误

    我已经实现了一个横幅 每当用户失去连接时就会弹出 重新连接后 另一个横幅会显示几秒钟然后消失 布局是一个RelativeLayout 其中一个灰色的TextView 表示警告 一个绿色的TextView 表示重新连接消息 如果我只是更改 V
  • 如何在 Android 中签署 AAR Artifacts?

    我目前正在开发一个 AAR android 库 我想用我自己的密钥对已发布的工件进行签名 以便我可以确定我是否发布了具有相同名称和功能的假 aar 注意事项1 我希望能够以编程方式检查我的库的真实性 即使是一个伪造的库 只是伪造了我的 aa
  • onPictureTaken 之后旋转 JPEG 的字节数组

    有没有办法旋转字节数组而不将其解码为位图 目前在 jpeg PictureCallback 中我只是将字节数组直接写入文件 但图片是旋转的 我想旋转它们而不解码为位图 希望这能节省我的记忆 BitmapFactory Options o n
  • Byte[] 和 java.lang.OutOfMemoryError 按位读/写文件

    我正在努力擦除 Android 中的一些可用空间 这是我的代码 private void creatingFileDelete int size int passMode File lastFile new File Environment
  • 更新到 3.2.0 后 Gradle 构建失败

    因此 在将 Gradle 插件更新到 3 2 0 并将 gradle wrapper 更新到 4 6 后 我遇到了问题 Android Studio 版本是 3 2 使用 Gradle 版本 即 alpha 11 也没有结果 什么地方出了错
  • 如何触发 Google Play 商店自动更新机制?

    简而言之 我希望我的应用程序在我向商店发布新的 APK 后立即更新 我找不到任何有关自动更新实际发生时间的信息 而且似乎变化很大 有一次是在几个小时后发生的 另一次是 12 小时没有更新 似乎是在设备重启时发生的 但是还有其他情况吗 我可以
  • 使用 ACTION_VIEW Intent Action 启动文件

    我有以下代码来启动文件 try path fileJsonObject getString filePath if path indexOf 0 path path substring 1 path length path root pat
  • 如何使此 XSL 转换仅考虑具有相同 id 的兄弟姐妹?

    我有这个 XSLT 2 0
  • RecyclerView onClick notificationItemRemoved 不会触发 onBindView

    I use notifyItemRemoved 方法我想更改其他剩余项目 但该方法没有触发onBindView 方法 除了使用notifyDataSetChanged 我想要附带的动画notifyItemRemoved method 如果您
  • 在 Cordova / PhoneGap 中生成 iOS 和 Android 图标

    我有一个新创建的 Cordova 项目 其中包含以下内容config xml设置 使用来自http docs phonegap com en edge config ref images md html http docs phonegap
  • 如何在列表视图中选择时启用视频序列自动播放?

    大家好 有人可以与我分享一下我如何编写我的 viewvideo java 类 以便它允许自动播放视频功能 自动排序在列表视图中播放所选视频的任务 从当前位置到最新录制的视频 按顺序直到最新的视频播放完毕 这类似于 YouTube 自动播放功
  • 如何在没有片段的情况下使用导航抽屉?

    我正在尝试遵循这个tutorial https developer android com training implementing navigation nav drawer html关于如何创建导航抽屉 但我不想在用户从抽屉列表中选择
  • java.lang.IllegalStateException:FragmentManager 已被销毁

    活动中onResume我称之为 volley request 的方法 它获取项目列表 然后将它们加载到此活动内的 ListFragment 中 当我第一次进入活动时 一切正常 但当我重新进入活动时 ListFragment 为空 并且控制台
  • 片段已添加 IllegalStateException

    我在容器 Activity 上使用此方法来显示 BFrag public void showBFrag Start a new FragmentTransaction FragmentTransaction fragmentTransact
  • 如何从 Google Fit API 获取步数?

    请原谅我的笨蛋 我对 Android 和 Google API 完全陌生 我有以下连接到 GoogleFit 的代码 我还有一个 API 密钥和 Oauth 我在哪里 如何使用 API 密钥和 Oauth 关于如何获取它们的指南有很多 但关

随机推荐

  • Ruby on Rails 中通过 sprocket 进行源映射

    我想在我正在开发的 Rails 3 2 应用程序上添加源映射支持 据我所知 Sprockets 不支持生成源地图 从其 github 页面来看 该功能似乎计划在 4 0 中使用 我正在使用 Sprockets 2 2 我认为猴子修补是唯一的
  • 将整数与MagicMock进行比较在python的unittest中不起作用

    我有一个类 它使用类变量来选择要执行的逻辑 in file1 class SomeHelper def init self self my var 0 in file2 import file1 class MyClass def calc
  • Highcharts 工具提示中未触发点击事件

    我正在使用 Highchart 库 我通过格式化程序函数回调创建一个工具提示 并在工具提示内插入一个链接 config tooltip formatter function console log this var tooltipHTML
  • 自动装配依赖项注入失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:

    我是新来的 我正在尝试使用 Spring 创建一个电子商店 但我在连接数据库时遇到问题 我搜索了一下 发现其他用户也问了同样的问题 但我找不到问题所在 我缺乏想法 这里出了什么问题 堆栈跟踪 org springframework bean
  • OpenGL + Mesa 3D + MinGW

    我在 Ubuntu Linux 上编写 C 应用程序并将它们编译到 2 个操作系统 本机到Linux通过使用 g GNU C 编译器 并将它们交叉编译为Windows通过使用 i386 mingw32 g MinGW C 交叉编译器 现在
  • WIX 服务安装程序会覆盖服务安装程序设置

    我正在开发一项稍后由 WIX 安装程序部署的服务 这是服务安装程序类 this ServiceInstaller DisplayName My Service this ServiceInstaller ServiceName MyServ
  • GridView 取一行

    NET 4 和 C 我有一个 GridView 我想在代码中处于编辑模式时取一行并找到一个控件 这是我的代码 但不起作用 它只需要 GridView 的第一行 有任何想法吗 protected void uxManageSlotsDispl
  • 如何在按下 ALT 键时使 WPF 菜单栏可见?

    今天 我的 WPF 用户界面受到了一些新的限制 这些限制应该会消除菜单栏的永久可见性 我想到模仿 Windows Live Messenger 的用户界面 仅当按下 ALT 键时 该应用程序才会显示菜单栏 当菜单栏上的焦点丢失时 它会再次隐
  • Tensorflow 对象检测 API - 超参数调整和网格搜索

    我目前正在使用 Tensorflow 对象检测 API 并且想要微调预训练的模型 因此 需要进行超参数调整 API 是否已经提供某种超参数调整 如网格搜索 如果没有可用的东西 我如何实现简单的网格搜索来调整 最相关的 超参数 此外 API
  • 强制下载 tar 存档的标头

    我的服务器上有一个 tar 存档 必须可以通过 php 下载 这是我使用过的代码 content file get contents tar header Content Type application force download he
  • 如何在JS中引用当前对象的属性[重复]

    这个问题在这里已经有答案了 可能的重复 对象文字声明中的自引用 https stackoverflow com questions 4616202 self references in object literal declarations
  • Swift 扩展“未找到方法定义”

    我正在为 ObjC 类编写 Swift 扩展 虽然我的代码编译并运行完美 我收到一堆 Xcode 警告 每个 Swift 方法一个 Method definition for foo method not found Method defi
  • Xamarin.Forms 将 Button ImageSource 设置为 ffimageloading Svg 嵌入资源

    我想放一个svg嵌入图像为ImageSource for a Button在 Xamarin Forms 中 类似这样
  • ios 5 当 UIImagePickerController 选择 3gp 文件时“操作无法完成”,并且整个 UI 冻结?

    普通视频文件 选择 压缩视频 输入imagePickerController didFinishPickingMediaWithInof打回来 但从 相机胶卷 中选取一个3gp文件 出现 操作无法完成 并且冻结 不响应任何输入操作 最后 我
  • 对话框打开时触发事件

    我的对话框是在div下定义的 dialogbox 当对话框打开时 我想触发一个事件 以便它警告打开 我使用的代码是 dialogbox dialog open function alert OPEN 但这似乎在打开对话框时不会触发 请帮忙
  • 如何创建仅提供静态内容的 VirtualHost

    我想在 apache 中创建一个虚拟主机 使其仅提供静态内容 如样式表 视频 图像 javascript 文本文件等 我没有考虑此虚拟主机的任何 处理 功能 创建一个VirtualHost录入如下
  • 在 php 中使用自动加载并搜索类文件会影响性能吗?

    我一直在努力解决如何最好地将类包含到我的 php 代码中 路径通常是一个问题 但几分钟前我发现这个问题 https stackoverflow com questions 4369 how to include php files that
  • Solrcloud 多核配置

    我有一个独立的Solr具有 4 个不同内核的实例使用嵌入式 Jetty 服务器运行良好 我为 v4 10 3 配置了核心 但自从我迁移到 v5 1 后 一切似乎都工作正常 无需任何更改 在投入生产之前 我需要将其设置为Solrcloud 安
  • 使用 C++ Boost 库有哪些优点? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 滚动视图内的 ExpandableListView

    在我的应用程序中 我想创建一个具有 ExpandableListView 和其下方的 CheckBox 的页面 我的问题是我的 ExpandableListView 太大 导致 CheckBox 超出页面范围 在较小的屏幕上根本不可见 我尝