Android - 线性布局排列,未按预期定位

时间:2010-12-23 08:29:09

标签: android layout

以下是我的代码。我想要一个界面,我有一个单行文本框,一个多行文本框,下面有两个按钮。我希望多行文本框在渲染按钮和文本框后占用所有可用空间。为此,我在主布局中创建了两个LinearLayouts。第一个具有垂直方向,layout_width设置为fill_parent。第二个是水平的,再次使用fill_parent。

第一个有一个文本框,我已将layout_height设置为填充父级。第二个有两个文本框OK和Cancel。

当我运行这个应用程序时,我得到了UI,但按钮非常小(高度约为5px)。我必须手动设置按钮高度。我在这做错了什么。我不想硬编码按钮高度。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1">
    <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Name"></TextView>
    <EditText android:layout_width="fill_parent" android:layout_height="wrap_content"></EditText>
    <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Contents"></TextView>
    <EditText android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="top"  />
</LinearLayout>
<LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="1">
    <Button android:id="@+id/okbutt" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="OK" android:layout_weight="1"  />
    <Button android:layout_width="fill_parent" android:layout_height="fill_parent" android:text="Cancel" android:layout_weight="1" />
</LinearLayout>

谢谢, 阿伦

2 个答案:

答案 0 :(得分:2)

我很好奇如何做到这一点,所以我决定尝试一下。这就是我提出的:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
   xmlns:android="http://schemas.android.com/apk/res/android" 
   android:orientation="vertical" 
   android:layout_width="fill_parent" 
   android:layout_height="fill_parent">
  <LinearLayout 
     android:id="@+id/buttons"
     android:orientation="horizontal" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"
     android:layout_alignParentBottom="true">
    <Button 
       android:id="@+id/okbutt" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1"
       android:text="OK" />
    <Button 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1"
       android:text="Cancel" />
  </LinearLayout>
  <TextView 
     android:id="@+id/textview1"
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true"
     android:text="Name" />
  <EditText 
     android:id="@+id/textedit1"
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"
     android:layout_below="@id/textview1" />
  <TextView 
     android:id="@+id/textview2"
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/textedit1"
     android:text="Contents" />
  <EditText 
     android:id="@+id/textedit2"
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_below="@id/textview2" 
     android:layout_above="@id/buttons" />
</RelativeLayout>

似乎做你想做的事。

答案 1 :(得分:0)

你可以在这里使用相对布局而不是两个线性布局,我认为它会给出更清晰的ui。和
如果你想手动增加按钮的高度,只需增加按钮上写的文字的高度,即OK的高度和取消

  

机器人:TEXTSIZE

试试这个,也许这个可以帮助你。