如果要切换2个可见视图中的一个,请如何使用布局权重

时间:2012-09-04 17:47:27

标签: android android-layout android-linearlayout

我有一个LinearLayout,它有一个取消按钮和一个进度条,其中进度条为70%,取消按钮为30%,如下所示:

<LinearLayout android:orientation="horizontal"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
  >

 <ProgressBar
     android:id="@+id/uploadProgressBar"
     style="?android:attr/progressBarStyleHorizontal"
     android:layout_width="0dp"
     android:layout_weight=".7"
     android:layout_height="wrap_content"
     android:layout_gravity="center_vertical"
     />
 <Button
     android:id="@+id/uploadCancelButton"
     style="@style/TitleBarButton"
     android:layout_width="0dp"
     android:layout_weight=".3"
     android:layout_height="wrap_content"
     android:text="@string/cancel_btn"
     android:layout_gravity="center_vertical"

      />

 </LinearLayout>

这很好用,但是我意识到实际上我想要显示进度条或文本视图,其中文本视图可能是一个小状态消息(如果说上传失败)。

我尝试将TextView放在上面的LinearLayout中,默认情况下将其可见性设置为“消失”,并将权重设置为与进度条相同。在代码中,我只将进度条设置为可见或文本视图,另一个我将设置为消失。然而,android系统似乎贡献了无形物品的重量。我甚至尝试在LinearLayout xml属性中使用android:weightSum =“1.0”,但那时我的按钮不再可见,因为即使文本消失了,也占用了空间。

1 个答案:

答案 0 :(得分:2)

ViewFlipper正是您要找的。

使用起来非常简单。您将想要切换的视图放在ViewFlipper中的方式与将它们放置在XML内的布局中的方式完全相同。然后,从代码中,在包含您的观看次序的setDisplayedChild()对象上调用ViewFlipper。此方法的参数是您要显示的视图的索引。