将TextView与相对布局

时间:2015-07-22 07:29:00

标签: android android-edittext textview alignment relativelayout

我在Android画布上看到了一些关于TextViewEditText对齐的帖子。但是,我没有找到能够以正确的方式帮助我的答案。我希望以下列方式TextViewEditText

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

EditText width height 是预定义的(dp中给出的值)。此外,还给出了 TextEdit top 左边距。这意味着我必须在屏幕上放置一定大小的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. 是否可以指定TextViewEditText还剩3 dp?
  4. 还有其他解决方案吗?
  5. 由于

    <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>
    

2 个答案:

答案 0 :(得分:1)

你正在使用layout_margin左边创建问题,如果你需要这么多,为什么不使用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" />

答案 1 :(得分:0)

只需排列XML,您就可以使用padding实现所需的功能。

<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">