1

我有一个Button在 a 中定义RelativeLayout如下:

<Button
        android:id="@+id/search_button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/current_location"
        android:layout_marginLeft="5dp"
        android:layout_marginRight="5dp"
        android:paddingBottom="30dp"
        android:paddingTop="30dp"
        android:text="@string/search" />

我想在Button后面添加一个ProgressBar,它与Button占据完全相同的空间,这样当按钮被禁用(半透明)时,你可以看到它后面的进度条。我该怎么做?

4

2 回答 2

9

为此,我必须先定义按钮main.xml,然后是进度条,如下所示:

<Button
    android:id="@+id/search_button"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/current_location"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:paddingBottom="30dp"
    android:paddingTop="30dp"
    android:text="@string/search" />

<ProgressBar
    android:id="@+id/cooldown_bar"
    style="@android:style/Widget.ProgressBar.Horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignBottom="@id/search_button"
    android:layout_below="@id/current_location"
    android:layout_marginBottom="6dp"
    android:layout_marginLeft="9dp"
    android:layout_marginRight="9dp"
    android:layout_marginTop="1dp"
    android:indeterminate="false"
    android:progressDrawable="@drawable/progress_bar" />

然后,一旦我初始化了所有的 GUI 组件,我必须将按钮带回到进度条的前面:

searchButton.bringToFront();

最终结果

启用时的按钮:

启用时的按钮

使用进度条禁用时的按钮:

使用进度条禁用时的按钮

于 2012-06-05T06:44:49.660 回答
2

将其放在 xml 中相对布局内的按钮之前:

    <ProgressBar
    android:id="@+id/descriptive_name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/current_location"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:paddingBottom="30dp"
    android:paddingTop="30dp"
     />

通过使用所有相同的layotu和padding属性,我们可以确保视图将在同一个位置并且大小大致相同(由于wrap_content,高度可能不同)我想如果你把进度条放在布局文件的第一位然后该按钮应出现在顶部。

但是您也可以执行您想要的任何策略,view.setVisibility(visibility-ness)只要确保每当您使一个可见时就使另一个不可见。

这样,以防万一我对它们在文件中的位置(我可能是,我刚才没有验证)默认情况下它们如何堆叠以及如果你不想移动进度条的情况有误在文件中的按钮下方,您仍然可以从用户的角度实现相同的目标。

于 2012-05-23T02:44:28.853 回答