定义布局

时间:2012-07-13 17:00:09

标签: android layout text

以下是我用于创建带有“在此处输入电话号码”标题的文本框的xml代码。我有一个编辑框,可以获取电话号码和按钮。 问题是文本框和编辑框彼此重叠。如何解决这个问题。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView android:id="@+id/textLabel"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:text="Enter number to dial"
        />
    <EditText android:id="@+id/phoneNumber"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        />
     <Button android:id="@+id/callButton"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:layout_alignParentBottom="true"
     android:text="Show Dialer"
     />


</RelativeLayout>

5 个答案:

答案 0 :(得分:1)

如果您正在使用Eclispe进行开发,只需切换到图形布局选项,您可以在其中拖动项目并定位它们[这将把上面答案中的代码添加到您的XML]。查看this视频,了解RelativeLayout以及如何使用它。 [视频来源:Google I / O 2012]

答案 1 :(得分:1)

当您想要彼此相对的项目时,最好使用TableLayout。我相信其他人有一种最喜欢的方式,但这是我的。

<?xml version="1.0" encoding="utf-8"?>
     <TableLayout 
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_height="match_parent" 
        android:layout_width="match_parent"
        android:background="#000044">
        <TableRow> 
            <TextView 
                android:text="Name:"
                android:width ="120px"
                />
            <EditText 
                android:id="@+id/someUserName" 
                android:width="200px" />
        </TableRow> 
        <TableRow>
            <TextView 
                android:text="Phone:"
                />
            <EditText 
                android:id="@+id/somePhone"  
                />
        </TableRow>
       <TableRow>
            <TextView 
                android:text="Address:"
                />
            <EditText 
                android:id="@+id/someAddress"  
                />
        </TableRow>
        <TableRow>
            <Button 
                android:id="@+id/buttonToClick" 
                android:text="Go Do Something Cool" />
        </TableRow>
    </TableLayout>

如果您希望一行中的所有三个项目都执行此操作

<?xml version="1.0" encoding="utf-8"?>
 <TableLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="match_parent" 
    android:layout_width="match_parent"
    android:background="#000044">

   <TableRow>
        <TextView 
            android:text="Call Number"
            android:paddingRight="50px"
            />
        <EditText 
            android:id="@+id/someNumber" 
            android:width ="120px"
            android:paddingLeft="10px"
            />

        <Button
            android:id="@+id/buttonToClick"
            android:text="Call" />

    </TableRow>
</TableLayout>

答案 2 :(得分:0)

您应该了解有关各种LayoutParams of RelativeLayout的更多信息。 下面的代码使用了其中一些代码,这也避免了重叠问题。

<TextView android:id="@+id/textLabel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:text="Enter number to dial"
    />
<EditText android:id="@+id/phoneNumber"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_toRightOf="@id/textLabel"
    android:layout_alignParentRight="true"
    android:layout_marginLeft="8dp"
    />
<Button android:id="@+id/callButton"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_below="@id/textLabel"
     android:layout_marginTop="8dp"
     android:text="Show Dialer"
     />

答案 3 :(得分:0)

使用LinearLayout而不是RelativeLayout,其方向为水平或垂直。 LinearLayout以线性方式自动排列内容。

答案 4 :(得分:0)

在EditText中使用android:layout_below =“@ + id / textLabel”属性,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/textLabel"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:text="Enter number to dial" />

    <EditText
        android:id="@+id/phoneNumber"
        android:layout_below="@+id/textLabel"  //  <--- MUST  Add  This
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="Now phoneNumber Will Appear"  //  <---  See  This
        android:layout_alignParentRight="true" />

    <Button
        android:id="@+id/callButton"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:text="Show Dialer" />

</RelativeLayout>