如何在较早的 API 版本中将进度条置于按钮前面?

How to bring a Progress Bar in front of a Button in older API versions?

我读了两篇关于这个主题的文章, and this

但两者都提供了更改高度或平移等解决方案。

问题是关于在不支持海拔或翻译属性的旧版本中在按钮前面添加进度条。

如何在 XML 和 Java 中执行此操作?!

或者无效。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.business.abdelhafiz.omar.civiltaif.LoginActivity">

    <ImageView
        android:src="@drawable/home_civil"
        android:scaleType="fitXY"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <ProgressBar
        android:id="@+id/login_progressbar"
        android:layout_centerInParent="true"
        android:layout_width="@dimen/image_height"
        android:layout_height="@dimen/image_height" />

    <Button
        android:id="@+id/login_email"
        android:layout_centerInParent="true"
        android:text="@string/login_email"
        android:onClick="loginEmail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/login_anonymous"
        android:layout_centerInParent="true"
        android:layout_below="@id/login_email"
        android:text="@string/login_anonymous"
        android:onClick="loginAnonymous"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

</RelativeLayout>

这是一个屏幕截图

我想把进度条放在按钮前面

编辑:

对我来说没有任何效果,所以我会在需要显示进度条时隐藏按钮。

感谢您的帮助。

这里是解决方案,我只是改变了元素的顺序

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
 tools:context="com.business.abdelhafiz.omar.civiltaif.LoginActivity">
<ImageView
    android:src="@drawable/home_civil"
    android:scaleType="fitXY"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
<Button
    android:id="@+id/login_email"
    android:layout_centerInParent="true"
    android:text="@string/login_email"
    android:onClick="loginEmail"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

<Button
    android:id="@+id/login_anonymous"
    android:layout_centerInParent="true"
    android:layout_below="@id/login_email"
    android:text="@string/login_anonymous"
    android:onClick="loginAnonymous"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />


<ProgressBar
    android:id="@+id/login_progressbar"
    android:layout_centerInParent="true"
    android:layout_width="@dimen/image_height"
    android:layout_height="@dimen/image_height" 
    android:background=""/>



</RelativeLayout>

我给进度添加了背景,可以看到进度在按钮前面

你可以这样把它移到底部

<ImageView
    android:src="@drawable/home_civil"
    android:scaleType="fitXY"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

<Button
    android:id="@+id/login_email"
    android:layout_centerInParent="true"
    android:text="@string/login_email"
    android:onClick="loginEmail"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

<Button
    android:id="@+id/login_anonymous"
    android:layout_centerInParent="true"
    android:layout_below="@id/login_email"
    android:text="@string/login_anonymous"
    android:onClick="loginAnonymous"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

<ProgressBar
    android:id="@+id/login_progressbar"
    android:layout_centerInParent="true"
    android:layout_width="@dimen/image_height"
    android:layout_height="@dimen/image_height" />

或者在 onCreate 方法中只写 login_progressbar.bringToFront();

设置进度条的高度; 2dp 似乎可行。

android:elevation="2dp"

您也可以尝试按照类似问题的已接受答案中的建议设置 translationZ。

我也看到了这个答案作为替代方案。