Android - 如何更改我的2列布局以获得动态宽度?

时间:2013-02-17 22:45:18

标签: android android-layout

我目前有一个2列布局,如下所示:

 <TextView android:id="@+id/TRAIN_CELL"
     android:layout_width="275dip"
     android:layout_height="wrap_content"         
     android:textSize="16sp"/>

 <TextView android:id="@+id/TO_CELL"
     android:layout_width="25dip"
     android:textSize="20sp"
     android:textStyle="bold" 
     android:gravity="center"
     android:textColor="@color/light_best_blue"
     android:layout_height="wrap_content"  
     android:layout_weight="1"/>

但是通过这种方法,我只是硬编码宽度,我不确定在更窄的屏幕上会发生什么。有没有办法调整这个以使用宽度的百分比?

谢谢!

2 个答案:

答案 0 :(得分:3)

您无法使用百分比指定宽度或高度,但有类似的内容 - weightSumlayout_weight。例如,如果你的View宽度为屏幕的一半,你就必须这样做:

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_height="wrap_content"
  android:layout_width="fill_parent"
  android:orientation="horizontal"
  android:weightSum="1.0">
  <View
    android:id="@+id/view"
    android:layout_height="wrap_content"
    android:layout_weight=".5"
    android:layout_width="0dip" />
</LinearLayout>

正如您所看到的,ViewLinearLayout)的容器已将android:weightSum设置为1.0,这意味着1.0将是android:layout_weight的100%它的宽度/高度。然后,如果您为此容器中的View指定.5,例如0dp,并将其宽度或高度设置为View(此部分非常重要,就好像您错过了它一样, {{1}}将使用它的指定值而不是根据权重计算的值,它将获得它的容器宽度/高度的50%值。

答案 1 :(得分:1)

android:layout_weight="1/2/3/4/5/..."将成为你的新朋友; - )

不要忘记也使用android:layout_width="0dip"