Android重量和布局宽度

时间:2014-03-28 13:57:36

标签: java android xml

我有一个线性布局和一个按钮。我希望按钮适合大约90%的布局宽度。在一些教程之后,我使用了属性layout_weight,这是我的代码:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="vertical"
   android:background="#FFFFFF"
   android:weightSum="5" >

<Button 
   android:id="@+id/newgame"

   android:layout_width="0dp" 
   android:layout_height="wrap_content" 
   android:layout_weight="4"

   android:text="@string/newgame"
   android:textSize="16sp"
   android:typeface="monospace"
   android:textStyle="bold"
   android:background="@drawable/backrepeat" />

</LinearLayout>

现在,如果我将layout_width设置为0dp,我的按钮会消失,就像大多数教程所说的那样......可能是什么问题? 提前谢谢。

3 个答案:

答案 0 :(得分:2)

线性布局权重仅在布局方向的维度上分布空间。你有一个垂直的线性布局和一个0px宽的元素 - 权重机制不会添加任何东西。将线性布局方向更改为水平。

答案 1 :(得分:1)

Vertical orientation!

Vertical

您可以轻松设置重量,就像这样使用.... 而不是0dp,您必须使用0dip

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF"
android:orientation="vertical"
android:weightSum="5" >

<Button
    android:id="@+id/newgame"
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_weight="4"
    android:background="@drawable/backrepeat"
    android:text="@string/newgame"
    android:textSize="16sp"
    android:textStyle="bold"
    android:typeface="monospace" />

</LinearLayout>

答案 2 :(得分:0)

试试这个,

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:background="#FFFFFF"
 >

 <Button 
    android:id="@+id/newgame"
    android:layout_width="0dp" 
    android:layout_height="wrap_content" 
    android:layout_weight="9"

    android:text="@string/newgame"
    android:textSize="16sp"
    android:typeface="monospace"
    android:textStyle="bold"
    android:background="@drawable/backrepeat" />

 </LinearLayout>

默认情况下,“线性布局”的方向是水平的,因此现在将根据水平宽度对齐它。 :)