对齐 TextView 和 EditText
Aligning TextViews and EditText
我试图在一条线上的 [=12=] 两侧对齐一对 TextView
。一些注意事项:
- 我想让它们紧紧地靠在一起,所以对于
EditText
右边的TextView
,我想确保没有大量的space
- 两者
TextViews
可能存在也可能不存在,具体取决于客户设置,但需要在运行时确定。因此,如果我将 TextViews
. 中的一个或两个的可见性设置为 NONE,则字段需要移动
- 所有 3 个字段都需要在屏幕上向右拉。
- "suffix"(右侧的
TextView
)的大小最多可变化 10 个字符,但我希望它能够自动填充所需的 space。
这是我想看到的:
但这就是我目前所拥有的:
如您所见,前缀和后缀($ 和 US)合并在一起,而不是在 EditText
的每一侧分开。我已经为所有相关字段使用了 android:layout_height
和 android: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>
我试图在一条线上的 [=12=] 两侧对齐一对 TextView
。一些注意事项:
- 我想让它们紧紧地靠在一起,所以对于
EditText
右边的TextView
,我想确保没有大量的space - 两者
TextViews
可能存在也可能不存在,具体取决于客户设置,但需要在运行时确定。因此,如果我将TextViews
. 中的一个或两个的可见性设置为 NONE,则字段需要移动
- 所有 3 个字段都需要在屏幕上向右拉。
- "suffix"(右侧的
TextView
)的大小最多可变化 10 个字符,但我希望它能够自动填充所需的 space。
这是我想看到的:
但这就是我目前所拥有的:
如您所见,前缀和后缀($ 和 US)合并在一起,而不是在 EditText
的每一侧分开。我已经为所有相关字段使用了 android:layout_height
和 android: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>