如何使用EditText(堆叠几行)将TextView堆叠在同一行上

时间:2015-08-15 12:20:17

标签: java android android-layout textview android-linearlayout

所以我试图在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>

照片:

enter image description here

你可以看到我无法看到其他TextView和EditText,所以我如何下线,以便密码字段位于第二行,电子邮件字段位于第3行和第4行的按钮?

4 个答案:

答案 0 :(得分:2)

您可以使用嵌套LinearLayout(一个垂直方向,其中有大量LinearLayout水平方向)来执行此操作。但是在Android中不鼓励嵌套ViewGroup(它会降低用户界面)。

您可以使用GridViewGridLayoutTableLayout

答案 1 :(得分:1)

试试这个

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

答案 2 :(得分:1)

您只使用一个LinearLayout,它会生成所有textviews和EditTexts只绘制一行。

而不是使用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" 
    />

答案 3 :(得分:0)

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