将进度条定位在按钮后面

时间:2012-05-23 02:01:29

标签: android layout button progress-bar relativelayout

我有一个Button,在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完全相同的空间,这样当按钮被禁用(半透明)时,你可以看到它背后的进度条。我该怎么做?

2 个答案:

答案 0 :(得分: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();

最终结果

启用时按钮:

Button when enabled

使用进度条禁用按钮:

Button when disabled with progress bar

答案 1 :(得分: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属性,我们可以确保View将位于相同的位置并且大小大致相同(由于wrap_content,高度可能会有所不同)我认为如果您将进度条放在第一位布局文件然后按钮应该出现在顶部。

但是你也可以使用view.setVisibility(visibility-ness)强制执行你想要的任何政策,只要确保每当你看到一个可见时你就让另一个看不见。

这样的方式我错了他们如何根据他们在文件中的位置默认堆叠(我可以,我现在没有验证它),如果你不想移动如果进度条低于文件中的按钮,您仍然可以从用户角度实现相同的功能。