【问题标题】:Align TextView with EditText inside Relative layout在相对布局中将 TextView 与 EditText 对齐
【发布时间】:2015-10-11 22:35:10
【问题描述】:

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

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

EditText widthheight 是预定义的(值以 dp 给出)。此外,还给出了 TextEdittopleft 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 旁边(EditText 左侧 2dp 或 3dp) . 我也尝试了其他属性,但没有结果。

  1. 是否有一些原生 android 属性可以像我想要的那样在 EditText 附近放置标签?
  2. 相对布局中是否有一些属性可以为我完成工作?
  3. 有没有办法只指定TextView 距离EditText 3 dp?
  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>

【问题讨论】:

  • 你能显示你的xml布局代码吗
  • 好的,您也可以使用link本站上传您的代码并分享链接,无需注册,代码将在7天内删除
  • 代码结构如下: EditText TextView EditText TextView Layout> 在 EditText 中指定高度、宽度、左右边距,在 TextView 中指定宽度 in dp、height-wrap content , align_top 和 align_left 与对应的 EditText id 对齐。
  • 试试这两个属性并提供正确的id,android:layout_alignBaseline="@+id/editText" android:layout_toLeftOf="@+id/editText"
  • 感谢您的帮助。我很感激。:) 我现在就试试。

标签: android android-edittext textview alignment android-relativelayout


【解决方案1】:

您正在使用 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" />

【讨论】:

  • 总是乐于提供帮助,如果您使用表格布局,请查看与表格布局相关的属性,以便更好地控制布局:)
【解决方案2】:

只需排列你的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">

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-13
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    相关资源
    最近更新 更多