对齐 TextView 和 EditText

Aligning TextViews and EditText

我试图在一条线上的 [​​=12=] 两侧对齐一对 TextView。一些注意事项:

  1. 我想让它们紧紧地靠在一起,所以对于EditText右边的TextView,我想确保没有大量的space
  2. 两者 TextViews 可能存在也可能不存在,具体取决于客户设置,但需要在运行时确定。因此,如果我将 TextViews.
  3. 中的一个或两个的可见性设置为 NONE,则字段需要移动
  4. 所有 3 个字段都需要在屏幕上向右拉。
  5. "suffix"(右侧的TextView)的大小最多可变化 10 个字符,但我希望它能够自动填充所需的 space。

这是我想看到的:

但这就是我目前所拥有的:

如您所见,前缀和后缀($ 和 US)合并在一起,而不是在 EditText 的每一侧分开。我已经为所有相关字段使用了 android:layout_heightandroid:layout_width,但没有达到预期的效果。 我尝试了 TableLayout,但由于我需要在右侧没有 TextView 的情况下将 EditText 值右移(在本例中为后缀或 "US") ,我认为这行不通(除非我遗漏了一些东西)所以我得到了以下内容,我认为它已经接近并且代表上面的当前屏幕截图:

<LinearLayout 
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:focusable="true"
    android:focusableInTouchMode="true">

    <TextView
        android:id="@+id/name"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:textSize="18sp"
        android:textStyle="normal"
        android:paddingLeft="5dp"
        android:paddingRight="5dp"
        android:paddingBottom="5dp"
        android:text="Test" />

    <RelativeLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="right"
        android:focusable="true"
        android:focusableInTouchMode="true">

        <TextView
            android:id="@+id/name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="$" />

        <EditText
            android:id="@+id/entry"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="number"
            android:text="12456"/>

        <TextView
            android:id="@+id/name"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="US" />

    </RelativeLayout>


    <View
        android:layout_marginTop="8dp"
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="@android:color/darker_gray"
        android:visibility="gone" />

</LinearLayout>

您应该使用对 LinearLayout 的更改并使用 android:layout_weight

 <LinearLayout
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="right"
    android:focusable="true"
    android:focusableInTouchMode="true">

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="XXdp"
        android:text="$" />

    <EditText
        android:id="@+id/entry"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="XXdp"
        android:inputType="number"
        android:text="12456"/>

    <TextView
        android:id="@+id/name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="XXdp"
        android:text="US" />

</LinearLayout>

看到这个https://developer.android.com/guide/topics/ui/layout/linear.html

这就是你需要的:)

 <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:focusable="true"
        android:focusableInTouchMode="true">

        <TextView
            android:id="@+id/name"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textSize="18sp"
            android:textStyle="normal"
            android:paddingLeft="5dp"
            android:paddingRight="5dp"
            android:paddingBottom="5dp"
            android:text="Test" />

        <RelativeLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="right"
            android:focusable="true"
            android:layout_marginRight="10dp"
            android:focusableInTouchMode="true">

            <TextView
                android:layout_toLeftOf="@+id/entry"
                android:id="@+id/symbol"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textStyle="bold"
                android:layout_centerVertical="true"
                android:text="$" />

            <EditText
                android:layout_toLeftOf="@+id/currency"
                android:layout_centerVertical="true"
                android:id="@+id/entry"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:inputType="number"
                android:text="12456"/>

            <TextView
                android:id="@+id/currency"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:layout_width="wrap_content"
                android:textStyle="bold"
                android:layout_height="wrap_content"
                android:text="US" />

        </RelativeLayout>


        <View
            android:layout_marginTop="8dp"
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:background="@android:color/darker_gray"
            android:visibility="gone" />

    </LinearLayout>