对齐TextViews和EditText

时间:2017-11-22 19:30:20

标签: android android-layout android-linearlayout android-relativelayout

我正在尝试在TextView的任意一侧将一对EditText对齐在一行上。一些警告:

  1. 我希望他们互相拉紧,所以对于TextView右边的EditText我要确保没有大量的空间
  2. TextViews可能存在或不存在,具体取决于客户设置,但需要在运行时确定。因此,如果我将TextViews中的一个或两个的可见性设置为NONE,则字段需要移位。
  3. 所有3个字段都需要在屏幕上向右拉。
  4. "后缀" (右侧TextView)大小不等,最多10个字符,但我希望自动填充所需空间。
  5. 这是我想看到的:

    enter image description here

    但这是我到目前为止所做的:

    enter image description here

    正如您所看到的,前缀和后缀($和US)合并在一起,而不是在EditText的每一侧分割。对于所有相关领域,我使用了android:layout_heightandroid:layout_width,但没有达到预期的效果。 我尝试了TableLayout,但因为如果右侧没有EditText,我需要将TextView值改为正确(后缀或" US" in这个例子),我不认为这会起作用(除非我在那里遗漏了一些东西)所以我已经登陆了以下内容,我认为它已经接近了,它代表了上面的当前屏幕截图:

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

2 个答案:

答案 0 :(得分:1)

您应该使用对LinearLayout的更改并使用$2

android:layout_weight

请参阅此https://developer.android.com/guide/topics/ui/layout/linear.html

答案 1 :(得分:1)

这就是你需要的东西:)

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