无法正确相对布局

时间:2013-09-17 05:02:32

标签: android android-layout

我一直在拉我的头发试图按照我想要的方式设置我的相对布局。我希望左侧有一个EditText,中间有一个TextView,右边有一个ButtonListView以上的所有人都在这里尽可能接近得到I have gotten ...

这是我正在使用的xml:

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

    <EditText
        android:id="@+id/new_bookmark_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_toLeftOf="@+id/new_bookmark_clock"
        android:ems="10"
        android:inputType="text" />

    <TextView
        android:id="@+id/new_bookmark_clock"
        android:layout_width="12sp"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/btn_add_new_bookmark"
        android:text="@string/xx_xx_xx" />

    <Button
        android:id="@+id/btn_add_new_bookmark"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="@string/add" />

     <ListView
         android:id="@+id/bookmark_list"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:layout_below="@+id/new_bookmark_name" />


</RelativeLayout>

任何人都可以帮助我吗?

7 个答案:

答案 0 :(得分:2)

您可以通过LinearLayout更好地实现它:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >

    <EditText
        android:id="@+id/new_bookmark_name"
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_toLeftOf="@+id/new_bookmark_clock"
        android:ems="10"
        android:inputType="text" />

    <TextView
        android:id="@+id/new_bookmark_clock"
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/btn_add_new_bookmark"
        android:text="@string/xx_xx_xx" />

    <Button
        android:id="@+id/btn_add_new_bookmark"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="@string/add" />

</LinearLayout>

答案 1 :(得分:1)

试试这个

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

<EditText
    android:id="@+id/new_bookmark_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_toLeftOf="@+id/new_bookmark_clock"
    android:layout_alignBaseline="@+id/btn_add_new_bookmark"
    android:ems="10"
    android:inputType="text" />

<TextView
    android:id="@+id/new_bookmark_clock"
    android:layout_width="wrap_content"
    android:layout_alignBaseline="@+id/btn_add_new_bookmark"
    android:layout_height="wrap_content"
    android:layout_toLeftOf="@+id/btn_add_new_bookmark"
    android:text="@string/xx_xx_xx" />

<Button
    android:id="@+id/btn_add_new_bookmark"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:text="@string/add" />

 <ListView
     android:id="@+id/bookmark_list"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:layout_below="@+id/new_bookmark_name" />


</RelativeLayout>

答案 2 :(得分:1)

你可以用这个:

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

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <EditText
        android:id="@+id/new_bookmark_name"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="0.5"
        android:ems="10"
        android:inputType="text" />

    <TextView
        android:id="@+id/new_bookmark_clock"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="0.3"
        android:text="XXXXXXXXX" />

    <Button
        android:id="@+id/btn_add_new_bookmark"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:layout_weight="0.2"
        android:text="Add" />
 </LinearLayout>

 <ListView
    android:id="@+id/bookmark_list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_below="@+id/new_bookmark_name" />

 </LinearLayout>

答案 3 :(得分:1)

尝试以下
android:layout_width="12sp"更改为android:layout_width="wrap_content"     

    <EditText
        android:id="@+id/new_bookmark_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_toLeftOf="@+id/new_bookmark_clock"
        android:ems="10"
        android:inputType="text" />

    <TextView
        android:id="@+id/new_bookmark_clock"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@+id/btn_add_new_bookmark"
        android:text="xx_xx_xx" />

    <Button
        android:id="@+id/btn_add_new_bookmark"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:text="add" />

    <ListView
        android:id="@+id/bookmark_list"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_below="@+id/new_bookmark_name" />

</RelativeLayout> 

答案 4 :(得分:1)

您提供固定宽度Textview会产生问题的问题,我刚添加了一个Relative Layout which achieve your goal, have a look below code

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


    <RelativeLayout 
        android:id="@+id/layout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content">



    <EditText
        android:id="@+id/new_bookmark_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:ems="10"
        android:inputType="text" />

    <TextView
        android:id="@+id/new_bookmark_clock"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerInParent="true"
        android:layout_toRightOf="@+id/new_bookmark_name"
        android:gravity="center"
        android:text="xx_xx_xx" />

    <Button
        android:id="@+id/btn_add_new_bookmark"
        style="?android:attr/buttonStyleSmall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:layout_centerInParent=""
        android:text="add" />

    </RelativeLayout>

     <ListView
         android:id="@+id/bookmark_list"
         android:layout_width="fill_parent"
         android:layout_height="fill_parent"
         android:layout_below="@+id/layout" />


</RelativeLayout>

答案 5 :(得分:1)

试试这个:

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <EditText
            android:id="@+id/new_bookmark_name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:ems="10"
            android:inputType="text" />

        <TextView
            android:id="@+id/new_bookmark_clock"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/xx_xx_xx" />

        <Button
            android:id="@+id/btn_add_new_bookmark"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/add" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >

        <ListView
            android:id="@+id/bookmark_list"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_below="@+id/new_bookmark_name" />
    </LinearLayout>

</LinearLayout>

答案 6 :(得分:0)

你可以这样试试,这样它可以让你的顶栏与列表视图分开。同样对于textview永远不要使用dp。 Sp用于文本大小。

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

<RelativeLayout  android:layout_width="fill_parent"
                 android:layout_height="wrap_content"
                 android:id ="@+id/top_bar">

<EditText
    android:id="@+id/new_bookmark_name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:layout_toLeftOf="@+id/new_bookmark_clock"
    android:ems="10"
    android:inputType="text" />

<TextView
    android:id="@+id/new_bookmark_clock"
    android:layout_width="12sp"
    android:layout_height="wrap_content"
    android:layout_toLeftOf="@+id/btn_add_new_bookmark"
    android:text="@string/xx_xx_xx" />

<Button
    android:id="@+id/btn_add_new_bookmark"
    style="?android:attr/buttonStyleSmall"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true"
    android:text="@string/add" />

 </RelativeLayout

 <ListView
     android:id="@+id/bookmark_list"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
  />