对齐TextView与EditText内的相对布局



我看到了一些关于TextViewEditText在Android canvas上对齐的帖子。但是,我没有找到答案,可以帮助我在正确的方式。我的愿望是有TextViewEditText在以下方式:

     (TextView) (EditText)          (TextView) (EditText)
     (TextView) (EditText)          (TextView) (EditText)
     (TextView) (EditText)          (TextView) (EditText)
     (TextView) (EditText)

EditText 宽度高度是预定义的(值以dp给出)。此外,还给出了 textit topleft margin。这意味着我必须将EditText放置在屏幕上的特定大小和特定位置。这是好的,我实现了它使用一个RelativeLayout容器。但我也应该把标签(TextView)旁边的EditText这样一种方式,我不指定dps中的任何值,因为textviews必须自动放置相对于EditText。例如

           Street: [Main Street] 
    Street Number: [     4     ]   

我尝试使用相对布局属性:

  layout_alignTop="@id/EditText"
  layout_toLeftOf="@id/EditText"

但是,TextView没有显示,因为它被放置在EditText的左侧,但正好在左边距(顶部对齐工作),而不是"完全"旁边的EditText (2dp或3dp从EditText左)像我想要的。我也尝试了其他属性,但没有结果。

  1. 是否有一些本地的android属性把标签附近的EditText像我想要的?
  2. 是否有一些属性在相对布局,可以为我做的工作?
  3. 是否有办法只是指定TextView是3 dp从EditText左?
  4. 还有其他解决方案吗?

感谢
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <EditText
    android:id="@+id/EditText1"
    android:hint="Write..."
    android:layout_width="80dp"
    android:layout_height="22dp"
    android:layout_marginTop="61dp"
    android:layout_marginLeft="160dp"
    android:background="@android:drawable/editbox_dropdown_light_frame"/>
    <TextView
    android:id="@+id/TextView1"
    android:layout_width="wrap_content"
    android:layout_height="22dp"
    android:text="Text"
    android:layout_toLeftOf="@+id/EditText1"
    android:layout_alignTop="@+id/EditText1"/>
    <EditText
    android:id="@+id/EditText2"
    android:hint="Write..."
    android:layout_width="200dp"
    android:layout_height="22dp"
    android:layout_marginTop="61dp"
    android:layout_marginLeft="490dp"
    android:background="@android:drawable/editbox_dropdown_light_frame"/>
    <TextView
    android:id="@+id/TextView2"
    android:layout_width="wrap_content"
    android:layout_height="22dp"
    android:text="Text"
    android:layout_alignTop="@+id/EditText2"
    android:layout_toLeftOf="@+id/EditText2" />
    </RelativeLayout>

你正在使用layout_margin left,这会产生问题,如果你需要的只是这么多,为什么不使用TableLayout

<?xml version="1.0" encoding="utf-8"?>
<TableLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <TableRow
        android:layout_marginTop="61dp">
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_weight="1">
        <TextView
            android:id="@+id/TextView1"
            android:layout_width="wrap_content"
            android:layout_height="22dp"
            android:text="Text" />
        <EditText
            android:id="@+id/EditText1"
            android:hint="Write..."
            android:layout_width="80dp"
            android:layout_height="22dp"
            android:background="@android:drawable/editbox_dropdown_light_frame"/>

    </LinearLayout>

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_weight="1"
        >
        <TextView
            android:id="@+id/TextView2"
            android:layout_width="wrap_content"
            android:layout_height="22dp"
            android:text="Text" />
        <EditText
            android:id="@+id/EditText2"
            android:hint="Write..."
            android:layout_width="80dp"
            android:layout_height="22dp"
            android:background="@android:drawable/editbox_dropdown_light_frame"/>

    </LinearLayout>
</TableRow>
</TableLayout>

复制整个TableRow标签并粘贴任意行

**但是如果你仍然想要相对布局,这里有你的修复代码**只需改变正确的边距值根据你的需要

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
    android:id="@+id/TextView1"
    android:layout_width="wrap_content"
    android:layout_height="22dp"
    android:text="Text"
    android:layout_marginTop="57dp"
    android:layout_marginLeft="80dp"
    />
<EditText
    android:id="@+id/EditText1"
    android:hint="Write..."
    android:layout_width="80dp"
    android:layout_height="22dp"
    android:background="@android:drawable/editbox_dropdown_light_frame"
    android:layout_alignTop="@+id/TextView1"
    android:layout_toRightOf="@+id/TextView1"
    android:layout_toEndOf="@+id/TextView1" />

<EditText
    android:id="@+id/EditText2"
    android:hint="Write..."
    android:layout_width="80dp"
    android:layout_height="22dp"
    android:background="@android:drawable/editbox_dropdown_light_frame"
    android:layout_alignTop="@+id/EditText1"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:layout_marginRight="25dp"
    android:layout_marginEnd="25dp" />
<TextView
    android:id="@+id/TextView2"
    android:layout_width="wrap_content"
    android:layout_height="22dp"
    android:text="Text"
    android:layout_alignTop="@+id/EditText2"
    android:layout_toLeftOf="@+id/EditText2"
    android:layout_toStartOf="@+id/EditText2" />

只要安排你的XML,你可以实现你想要的填充。

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="16dp"
    android:paddingRight="16dp">

最新更新