RelativeLayout不起作用

时间:2012-07-16 17:00:56

标签: android relativelayout

我的RelativeLayout存在问题。

我将6 Views放在彼此旁边并且有效。

我遇到的问题是EditTexts。当我将宽度设置为wrap_content时,它们太小了。

当我将它们设置为match_parent时,它们会占据整个宽度(它们覆盖另一个Views),而不是调整到它们旁边的Views的边缘。

所以我的问题是如何在不给它们静态宽度的情况下使它们合适?

这是我的代码:

<RelativeLayout
    android:id="@+id/relativelayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/tv1"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:text="text 1" />

    <EditText
        android:id="@+id/et1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/tv1"
        android:singleLine="true" />

    <TextView
        android:id="@+id/tv2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/et1"
        android:text="text 2" />

    <EditText
        android:id="@+id/et2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/tv2"
        android:singleLine="true" />

    <TextView
        android:id="@+id/tv3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@+id/et2"
        android:text="text 3" />

    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_toRightOf="@+id/tv3" />

</RelativeLayout>

2 个答案:

答案 0 :(得分:4)

尝试以下代码。

如果您希望盒子的大小稍微不同,则需要应用静态尺寸或稍微调整一下重量以获得您想要的正确空间。

但是,我建议实际改变布局一点点。将它们全部放在同一条线上似乎有些混乱。除非这是横向模式。然后它可能没问题。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/relativelayout1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/tv1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="text 1" />

    <EditText
        android:id="@+id/et1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:singleLine="true" />

    <TextView
        android:id="@+id/tv2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="text 2" />

    <EditText
        android:id="@+id/et2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:singleLine="true" />

    <TextView
        android:id="@+id/tv3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="text 3" />

    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:layout_toRightOf="@+id/tv3" />

</LinearLayout>

布局图:

enter image description here

答案 1 :(得分:1)

使用相对布局,您需要一个令人满意的包装内容或静态尺寸。 如果我理解得很好,您希望编辑文本填充屏幕宽度的剩余部分。 您必须使用LinearLayout和android:layout_weight属性 - you can find an example here

<LinearLayout
        android:id="@+id/ll"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation:"horizontal">
        <TextView
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:text="text 1" />

        <EditText
        android:id="@+id/et1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:singleLine="true"/>

        <EditText
        android:id="@+id/et2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:singleLine="true" />

        <TextView
        android:id="@+id/tv3"
        android:layout_width="0dp"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:text="text 3" />

        <Spinner
        android:id="@+id/spinner1"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true" />

</LinearLayout>