以下是我用于创建带有“在此处输入电话号码”标题的文本框的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>
答案 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>