簡體   English   中英

在相對布局內將TextView與EditText對齊

[英]Align TextView with EditText inside Relative layout

我在Android畫布上看到了一些有關TextViewEditText對齊的帖子。 但是,我沒有找到可以以正確的方式幫助我的答案。 我的願望是以下列方式擁有TextViewEditText

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

EditText 寬度高度是預定義的(值在dp中給出)。 此外, 文本編輯頂部左側邊距中給出。 這意味着我必須在屏幕上放置一定大小和位置的EditText 沒關系,我使用一個RelativeLayout容器實現了它。 但是,我還應該以這種方式放置label( TextView )到EditText旁邊,這樣我就不會在dps中指定任何值,因為textview必須相對於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. 有沒有辦法只指定TextViewEditText還剩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>

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM