Android Studio 中相对布局问题中按钮顶部的进度条

2024-01-12

好吧,这是一个奇怪的问题,我希望有人能向我解释一下。

我有一个自定义按钮布局,它创建一个按钮,按钮中间有一个圆形进度条。我的 XML 代码如下。然而我无法解决的是ProgressBar似乎出现在按钮后面。如果我将按钮背景设置为透明以外的任何内容,则看不到进度条。按钮背景透明后我可以看到ProgressBar但它仍然出现在按钮文本后面。我的理解是,视图按添加顺序出现。我什至尝试将视图设置在顶部(view.bringToFront();),并且我尝试删除视图并重新创建它。

为什么进度条出现在按钮后面?我该如何解决?

非常感谢

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

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/transparent"
        android:text="Button"
        android:gravity="center"
        android:textColor="@android:color/white"
        android:singleLine="true"
        android:clickable="false">
    </Button>

    <ProgressBar
        android:id="@+id/progressBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/transparent"
        android:layout_centerInParent="true"
        android:visibility="visible"
        />

</RelativeLayout> 

使用上述布局的代码

 private void setupTableLayout(int NumberOfRows, int NumberOfButtons){
    TableLayout.LayoutParams tableParams = new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.MATCH_PARENT);
    TableRow.LayoutParams rowParams = new TableRow.LayoutParams(0, android.widget.TableRow.LayoutParams.MATCH_PARENT, 3f);
    TableLayout tableLayout = (TableLayout) findViewById(R.id.thetablelayout);
    tableLayout.removeAllViews();

    for (int i = 0; i < NumberOfRows; i++) {
        TableRow tableRow = new TableRow(this);
        tableRow.setLayoutParams(tableParams);

        RelativeLayout btnOneLayout = (RelativeLayout)getLayoutInflater().inflate(R.layout.custom_button, null);
        RelativeLayout btnTwoLayout = (RelativeLayout)getLayoutInflater().inflate(R.layout.custom_button, null);

        ProgressBar btnOneProgressBar = (ProgressBar)btnOneLayout.findViewById(R.id.progressBar);
        ProgressBar btnTwoProgressBar = (ProgressBar)btnTwoLayout.findViewById(R.id.progressBar);

        btnOneLayout.setLayoutParams(rowParams);
        btnTwoLayout.setLayoutParams(rowParams);

        Button btnOne = (Button)btnOneLayout.findViewById(R.id.button);
        btnOne.setText("Btn 1, Row " + i);
        btnOne.setId(1001 + i);
        Button btnTwo = (Button)btnTwoLayout.findViewById(R.id.button);
        btnTwo.setText("Btn 2, Row " + i);
        btnTwo.setId(2001 + i);

        setButtonClickListener(btnOneLayout, btnOneProgressBar);
        setButtonLongClickListener(btnOneLayout, btnOneProgressBar);

        tableRow.addView(btnOneLayout); //Add layout, instead of just Button

        View adivider = new View(this);
        adivider.setLayoutParams(new TableRow.LayoutParams(20, TableRow.LayoutParams.MATCH_PARENT));
        adivider.setBackgroundColor(Color.TRANSPARENT);

        // This bit of code deals with odd/even numbers of buttons.
        if (((i + 1) * 2) < NumberOfButtons + 1) {
            tableRow.addView(adivider);
            tableRow.addView(btnTwoLayout);
        } else {
            tableRow.addView(adivider);

            btnTwoLayout.setBackgroundResource(android.R.color.transparent); 
            tableRow.addView(btnTwoLayout);
        }


        tableLayout.addView(tableRow);

    }

}

您可能在 android >= 5.0 上运行此程序。在 5.0 中,他们添加了视图的高程字段。 Elevation 定义 ViewGroup 中视图的 z 顺序。

在这种情况下,按钮具有非零标高值,进度条具有零值标高。

将进度条的高度设置为例如10dp

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

Android Studio 中相对布局问题中按钮顶部的进度条 的相关文章

随机推荐

  • 有没有办法在运行时检测 iOS 上的 VFP/NEON/Thumb/...?

    因此 通过查询就可以很容易地找出 iOS 设备运行的 CPU 类型sysctlbyname hw cpusubtype 但似乎没有明显的方法来弄清楚 CPU 实际具有哪些功能 想想 VFP NEON Thumb 有人能想办法做到这一点吗 基
  • 对“pthread_key_create”的未定义引用(链接器错误)

    我从这里下载了 gtest 1 7 0 源代码 https code google com p googletest downloads list https code google com p googletest downloads l
  • Mac OS X 有图形化的“sudo”吗?

    我正在用 Java 设计一个小软件 我不知道我正在做的事情的术语 定义 但我正在将命令从 Java 提示到终端 像这样的事情 Process process Runtime getRuntime exec command 我以前在 Linu
  • jQuery Mobile:对所有页面使用相同的页眉页脚

    我正在尝试实现一些代码 这些代码将在我的所有网页上创建页眉和页脚 而不是对它们进行硬编码 我试过这个 我在我的 主页 中有这个 我只是将我想要的标题包装在 div 中 div div h1 Title h1 div div 然后在其他页面中
  • VS2012 如何关闭编辑器选项卡着色?

    我努力阅读 Visual Studio 2012 源代码编辑器中的选项卡 我什至不明白不同颜色代表什么意思 它们看起来完全是随机的 黑底棕色或黑底蓝 谁选呢 所以我想关闭选项卡的颜色并恢复为白底黑字或浅灰色 我看过 选项 gt gt 环境
  • 按使用 Rails 3 的儿童数量过滤

    我想使用 Rails 3 和单个查询来选择具有一个或多个评论的帖子 我正在尝试这样的事情 Post includes comments where count comments id gt 0 但是我收到这个错误 ActiveRecord
  • 您的规范源均不包含满足依赖项的规范:Firebase (~> 6.33.0)、Firebase (= 6.33.0、~> 6.33.0)

    我正在将一些 Firebase SDK 实现到我的 pod 中 但我在对它们进行版本控制时遇到问题 我想设置 Firebase 6 33 我确实检查了这个版本的 pod 规格并根据该规格更新了我的 pod pod Firebase gt 6
  • Web 配置错误:无法识别属性“xmlns:xdt”。请注意,属性名称区分大小写

    我正在尝试将应用程序部署到 AppHarbor 并按照他们有关如何修改我的 web config 的说明进行操作 因此它使用他们的 auf Sql 服务器实例 运行解决方案后 我收到主题中提到的错误 Unrecognized attribu
  • 接受表单元素作为方法参数?

    我正在编写一个方法 它将截取传递的表单元素的屏幕截图并将其打印出来 我面临一些挑战 我希望能够使这个方法足够通用 以接受几乎任何类型的表单元素 我将 元素 参数设置为 对象 类型 我想我还需要传递一个 类型 参数 或者有没有办法弄清楚对象传
  • telerik radGrid - 在排序/分页/过滤器上保留客户端状态

    即使在这个阿贾克斯例子 http demos telerik com aspnet ajax grid examples hierarchy nestedviewtemplate defaultcs aspx我真的很喜欢它的外观 当顶层网格
  • 如何通过 from_avro 标准函数使用 Confluence Schema Registry? [复制]

    这个问题在这里已经有答案了 My Kafka 和 Schema Registry 基于 Confluence Community Platform 5 2 2 My Spark 版本为 2 4 4 我使用以下命令启动 Spark REPL
  • 使用 getter/setter 与“告诉,不要问”?

    只讲原则 不问原则here http pragprog com articles tell dont ask当我使用 getter 或 setter 时 经常会粘贴到我身上 人们告诉我不要使用它们 该网站清楚地解释了我应该做什么和不应该做什
  • 如何通过深度链接传递数据?

    我的应用程序中有一个报价列表 每个列表项上都有一个共享按钮 当任何用户单击共享链接时 我正在使用深层链接打开我的应用程序的报价详细信息活动 我处于以下情况当有人点击链接时 我的详细信息页面活动就会被触发 但是我怎么知道 当有人点击共享深层链
  • C++ 检查大括号是否匹配

    我被要求作为一项额外的编程挑战 看看大括号是否在随机字符串或字符中匹配 如下所示 1 1 将返回 1 而 1 1 将返回 0 这是我到目前为止所拥有的 但它似乎没有做任何事情 任何帮助都会很棒吗 谢谢 bonus cpp include
  • Tkinter - 将文本插入画布窗口

    我有一个 Tkinter 画布 其中填充了文本和画布窗口或小部件 使用create text and create window方法 我放置在画布上的小部件是文本小部件 我想在创建和放置它们后将文本插入其中 我不知道如何做到这一点 如果可能
  • 如何对数据框中的列进行重新排序?

    如何更改此输入 顺序为 时间 输入 输出 文件 Time In Out Files 1 2 3 4 2 3 4 5 对于此输出 顺序为 时间 输出 输入 文件 Time Out In Files 1 3 2 4 2 4 3 5 这是虚拟 R
  • 使用 urllib 发出 post 请求

    我正在尝试向 API 提供商提出请求 curl https api infermedica com dev parse X POST H App Id 4c177c H App Key 6852599182ba85d70066986ca2b
  • 如何将第三方 javascript 库与 ionic4 和电容器一起使用?

    使用 Ionic 4 Angular 应用程序和 Capacitor 安装第三方 javascript 库的正确方法是什么 我尝试安装克鲁克图书馆 https github com jackedgson crunker如下 npm inst
  • Angular 2 中不同页面的多种布局

    我有一个登录页面 只有 2 个输入 无页眉 无页脚 无侧边栏 当用户登录时 他应该导航到带有页眉 页脚和右侧导航栏的页面 内页唯一改变的是右侧内容 import Component from angular core import View
  • Android Studio 中相对布局问题中按钮顶部的进度条

    好吧 这是一个奇怪的问题 我希望有人能向我解释一下 我有一个自定义按钮布局 它创建一个按钮 按钮中间有一个圆形进度条 我的 XML 代码如下 然而我无法解决的是ProgressBar似乎出现在按钮后面 如果我将按钮背景设置为透明以外的任何内