如何将 TextView 与 EditText 堆叠在同一行(堆叠几行)
How to stack TextView's on same line with EditText's (stack a couple of rows)
所以我试图在 LinearLayout 中堆叠几行 TextView 和 EditText(每行在同一行)。但我设法只使用第一对 TextView 和 EditText 来做到这一点。我只是不知道如何进入下一行。
XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.mylifeinformationsharedsocial.SignUpActivity" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/username_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/username_text"
android:textSize="20sp"
android:gravity="start"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/username_edit_text_id"
android:hint="@string/username_hint_texts"
android:gravity="end"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/password_id"
android:text="@string/password_text"
android:textSize="20sp"
/>
<EditText
android:id="@+id/password_edit_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="@string/passworde_hint_texts"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/email_id"
android:text="@string/email_text"
android:textSize="20sp"
/>
<EditText
android:id="@+id/email_edit_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:hint="@string/email_hint_text"
/>
<Button
android:id="@+id/sign_up_button_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sign_up_button_text"
/>
</LinearLayout>
图片:
你可以看到我看不到其他 TextView 和 EditText,那么我如何向下一行,使密码字段在第 2 行,电子邮件字段在第 3 行,按钮在第 4 行线?
试试这个
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="horizontal"
tools:context="com.example.mylifeinformationsharedsocial.SignUpActivity" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/username_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/username_text"
android:textSize="20sp"
android:gravity="start"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/username_edit_text_id"
android:hint="@string/username_hint_texts"
android:gravity="end"
/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/password_id"
android:text="@string/password_text"
android:textSize="20sp"
/>
<EditText
android:id="@+id/password_edit_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="@string/passworde_hint_texts"
/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/email_id"
android:text="@string/email_text"
android:textSize="20sp"
/>
<EditText
android:id="@+id/email_edit_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:hint="@string/email_hint_text"
/>
</LinearLayout>
<Button
android:id="@+id/sign_up_button_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sign_up_button_text"
/>
</LinearLayout>
您在 other question 的评论中说您想使用 LinearLayout
。如果是这样,您可以 将多个 horizontal
线性布局包裹在 vertical
线性布局 中,如下所示:
(请参阅下面的基于 TableLayout
的解决方案)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
>
<TextView
android:id="@+id/username_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/username_text"
android:textSize="20sp"
android:gravity="start"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/username_edit_text_id"
android:hint="@string/username_hint_texts"
android:gravity="end"
/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/password_id"
android:text="@string/password_text"
android:textSize="20sp"
/>
<EditText
android:id="@+id/password_edit_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="@string/passworde_hint_texts"
/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/email_id"
android:text="@string/email_text"
android:textSize="20sp"
/>
<EditText
android:id="@+id/email_edit_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:hint="@string/email_hint_text"
/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/sign_up_button_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sign_up_button_text"
/>
</LinearLayout>
</LinearLayout>
如果您想改用 TableLayout
(渲染速度可能更快 并且 字段对齐),请使用
<?xml version="1.0" encoding="utf-8"?>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
>
<TableRow>
<TextView
android:id="@+id/username_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/username_text"
android:textSize="20sp"
android:gravity="start"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/username_edit_text_id"
android:hint="@string/username_hint_texts"
android:gravity="end"
/>
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/password_id"
android:text="@string/password_text"
android:textSize="20sp"
/>
<EditText
android:id="@+id/password_edit_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="@string/passworde_hint_texts"
/>
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/email_id"
android:text="@string/email_text"
android:textSize="20sp"
/>
<EditText
android:id="@+id/email_edit_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:hint="@string/email_hint_text"
/>
</TableRow>
<TableRow>
<Button
android:id="@+id/sign_up_button_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sign_up_button_text"
/>
</TableRow>
</TableLayout>
您只使用了一个 LinearLayout,它会导致所有文本视图和 EditText 仅绘制在一行中。
不要使用 RelativeLayout(如果只放置一个视图或一个视图组,请不要使用 RelativeLayot,这是非常低效的,请改用 FrameLayout)使用类似的东西:
<TextView
android:id="@+id/username_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/username_text"
android:textSize="20sp"
android:gravity="start"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/username_edit_text_id"
android:hint="@string/username_hint_texts"
android:gravity="end"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/password_id"
android:text="@string/password_text"
android:textSize="20sp"
/>
<EditText
android:id="@+id/password_edit_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="@string/passworde_hint_texts"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/email_id"
android:text="@string/email_text"
android:textSize="20sp"
/>
<EditText
android:id="@+id/email_edit_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:hint="@string/email_hint_text"
/>
</LinearLayout>
<Button
android:id="@+id/sign_up_button_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sign_up_button_text"
/>
您可以使用嵌套的 LinearLayout
(一个垂直方向有很多 LinearLayout
水平方向)来做到这一点。但是在 Android 中不鼓励嵌套 ViewGroup
(它会减慢 UI)。
您也许可以使用 GridView, GridLayout or TableLayout。
所以我试图在 LinearLayout 中堆叠几行 TextView 和 EditText(每行在同一行)。但我设法只使用第一对 TextView 和 EditText 来做到这一点。我只是不知道如何进入下一行。
XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.example.mylifeinformationsharedsocial.SignUpActivity" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/username_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/username_text"
android:textSize="20sp"
android:gravity="start"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/username_edit_text_id"
android:hint="@string/username_hint_texts"
android:gravity="end"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/password_id"
android:text="@string/password_text"
android:textSize="20sp"
/>
<EditText
android:id="@+id/password_edit_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="@string/passworde_hint_texts"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/email_id"
android:text="@string/email_text"
android:textSize="20sp"
/>
<EditText
android:id="@+id/email_edit_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:hint="@string/email_hint_text"
/>
<Button
android:id="@+id/sign_up_button_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sign_up_button_text"
/>
</LinearLayout>
图片:
你可以看到我看不到其他 TextView 和 EditText,那么我如何向下一行,使密码字段在第 2 行,电子邮件字段在第 3 行,按钮在第 4 行线?
试试这个
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:orientation="horizontal"
tools:context="com.example.mylifeinformationsharedsocial.SignUpActivity" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:id="@+id/username_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/username_text"
android:textSize="20sp"
android:gravity="start"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/username_edit_text_id"
android:hint="@string/username_hint_texts"
android:gravity="end"
/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/password_id"
android:text="@string/password_text"
android:textSize="20sp"
/>
<EditText
android:id="@+id/password_edit_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="@string/passworde_hint_texts"
/>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/email_id"
android:text="@string/email_text"
android:textSize="20sp"
/>
<EditText
android:id="@+id/email_edit_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:hint="@string/email_hint_text"
/>
</LinearLayout>
<Button
android:id="@+id/sign_up_button_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sign_up_button_text"
/>
</LinearLayout>
您在 other question 的评论中说您想使用 LinearLayout
。如果是这样,您可以 将多个 horizontal
线性布局包裹在 vertical
线性布局 中,如下所示:
(请参阅下面的基于 TableLayout
的解决方案)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
>
<TextView
android:id="@+id/username_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/username_text"
android:textSize="20sp"
android:gravity="start"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/username_edit_text_id"
android:hint="@string/username_hint_texts"
android:gravity="end"
/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/password_id"
android:text="@string/password_text"
android:textSize="20sp"
/>
<EditText
android:id="@+id/password_edit_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="@string/passworde_hint_texts"
/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/email_id"
android:text="@string/email_text"
android:textSize="20sp"
/>
<EditText
android:id="@+id/email_edit_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:hint="@string/email_hint_text"
/>
</LinearLayout>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/sign_up_button_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sign_up_button_text"
/>
</LinearLayout>
</LinearLayout>
如果您想改用 TableLayout
(渲染速度可能更快 并且 字段对齐),请使用
<?xml version="1.0" encoding="utf-8"?>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
>
<TableRow>
<TextView
android:id="@+id/username_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/username_text"
android:textSize="20sp"
android:gravity="start"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/username_edit_text_id"
android:hint="@string/username_hint_texts"
android:gravity="end"
/>
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/password_id"
android:text="@string/password_text"
android:textSize="20sp"
/>
<EditText
android:id="@+id/password_edit_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="@string/passworde_hint_texts"
/>
</TableRow>
<TableRow>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/email_id"
android:text="@string/email_text"
android:textSize="20sp"
/>
<EditText
android:id="@+id/email_edit_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:hint="@string/email_hint_text"
/>
</TableRow>
<TableRow>
<Button
android:id="@+id/sign_up_button_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sign_up_button_text"
/>
</TableRow>
</TableLayout>
您只使用了一个 LinearLayout,它会导致所有文本视图和 EditText 仅绘制在一行中。
不要使用 RelativeLayout(如果只放置一个视图或一个视图组,请不要使用 RelativeLayot,这是非常低效的,请改用 FrameLayout)使用类似的东西:
<TextView
android:id="@+id/username_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/username_text"
android:textSize="20sp"
android:gravity="start"
/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/username_edit_text_id"
android:hint="@string/username_hint_texts"
android:gravity="end"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/password_id"
android:text="@string/password_text"
android:textSize="20sp"
/>
<EditText
android:id="@+id/password_edit_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPassword"
android:hint="@string/passworde_hint_texts"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/email_id"
android:text="@string/email_text"
android:textSize="20sp"
/>
<EditText
android:id="@+id/email_edit_text_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:hint="@string/email_hint_text"
/>
</LinearLayout>
<Button
android:id="@+id/sign_up_button_id"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/sign_up_button_text"
/>
您可以使用嵌套的 LinearLayout
(一个垂直方向有很多 LinearLayout
水平方向)来做到这一点。但是在 Android 中不鼓励嵌套 ViewGroup
(它会减慢 UI)。
您也许可以使用 GridView, GridLayout or TableLayout。