【问题标题】:Move to next EditText on click on Button单击按钮移动到下一个 EditText
【发布时间】:2018-12-22 22:55:12
【问题描述】:

这是用户需要提交的表单。它包含:标题、描述、价格、国家、省份、电子邮件地址和保存按钮。 我会将所有的 EditTexts 和 Save Button 设置为水平的,并在底部设置一个 Next 按钮。 当用户输入标题然后按下一步按钮时,会出现描述输入文本。输入一些描述,按下一步并出现价格,依此类推,直到保存按钮。 我将在屏幕上显示 6 张图像,占据大部分视图,因此我希望编辑文本位于底部。

除了使用水平滚动条之外,我想不出更好的方法,但我真的不想滚动。

前: 标题可见,而其余的 EditText 不可见。当用户输入标题并单击下一步按钮时,标题消失,描述 EditText 出现,依此类推,直到结束。 我只想一次在 EditText 上显示。

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>


<LinearLayout
    android:id="@+id/imagesLayout"
    android:layout_width="match_parent"
    android:layout_height="400dp"
    android:orientation="horizontal">
    <ImageView
        android:id="@+id/iv_image1"
        android:layout_width="50dp"
        android:layout_height="50dp"/>
    <ImageView
        android:id="@+id/iv_image2"
        android:layout_width="50dp"
        android:layout_height="50dp"/>
    <ImageView
        android:id="@+id/iv_image3"
        android:layout_width="50dp"
        android:layout_height="50dp"/>
    <ImageView
        android:id="@+id/iv_image4"
        android:layout_width="50dp"
        android:layout_height="50dp"/>
    <ImageView
        android:id="@+id/iv_image5"
        android:layout_width="50dp"
        android:layout_height="50dp"/>
    <ImageView
        android:id="@+id/iv_image6"
        android:layout_width="50dp"
        android:layout_height="50dp"/>

    <TextView
        android:id="@+id/tv_multi_selection"
        android:layout_width="80dp"
        android:layout_height="20dp"
        android:background="@color/blue5"

        android:text="Images" />
</LinearLayout>

<HorizontalScrollView
    android:id="@+id/horizontal_scrollview"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_toLeftOf="@id/btn_right"
    android:fadeScrollbars="false"
    android:padding="5dp"
    android:scrollbarAlwaysDrawHorizontalTrack="true"
    android:scrollbars="horizontal"
    android:layout_below="@+id/imagesLayout">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="80dp"
    android:layout_marginTop="10dp"
    android:orientation="horizontal">


    <EditText
        android:id="@+id/input_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="20dp"
        android:ems="10"
        android:hint="Title"
        android:inputType="textPersonName"
        android:padding="7dp"
        android:singleLine="true"

        android:textSize="14sp" />


    <EditText
        android:id="@+id/input_description"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="20dp"
        android:layout_marginTop="20dp"
        android:layout_marginRight="20dp"
        android:ems="10"
        android:hint="Description"
        android:inputType="textMultiLine"
        android:padding="7dp"
        android:singleLine="true"

        android:textSize="14sp" />


    <EditText
        android:id="@+id/input_price"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="20dp"
        android:ems="10"
        android:hint="Price"
        android:inputType="numberDecimal"
        android:padding="7dp"
        android:textSize="14sp" />

    <EditText
        android:id="@+id/input_country"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="20dp"
        android:ems="10"
        android:hint="Country"
        android:inputType="textCapWords"
        android:padding="7dp"
        android:textSize="14sp" />

    <EditText
        android:id="@+id/input_state_province"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="20dp"
        android:ems="10"
        android:hint="State/Province/Region"
        android:inputType="textCapWords"
        android:padding="7dp"
        android:textSize="14sp" />

    <EditText
        android:id="@+id/input_city"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="20dp"
        android:ems="10"
        android:hint="City"
        android:inputType="textCapWords"
        android:padding="7dp"
        android:textSize="14sp" />
    <EditText
        android:id="@+id/input_email"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:layout_marginTop="20dp"
        android:ems="10"
        android:hint="Your Contact Email"
        android:inputType="textEmailAddress"
        android:padding="7dp"
        android:textSize="14sp" />

    <Button
        android:id="@+id/btn_post"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="20dp"
        android:layout_marginLeft="10dp"
        android:layout_marginRight="10dp"
        android:layout_marginTop="50dp"
        android:background="@color/colorPrimary"
        android:text="Post"
        android:textColor="@android:color/white" />

    <ProgressBar
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:id="@+id/progressBar"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="120dp"
        android:visibility="invisible"/>

</LinearLayout>

</HorizontalScrollView>

<Button
    android:id="@+id/btn_right"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_marginLeft="10dp"
    android:layout_marginTop="0dp"
    android:layout_marginRight="10dp"
    android:layout_marginBottom="20dp"
    android:background="@color/colorPrimary"
    android:text="Next"
    android:textColor="@android:color/white"
    android:layout_alignParentBottom="true"
    />


  </LinearLayout>

【问题讨论】:

  • 你是在问如何让edittext将屏幕焦点切换到下一个控件?
  • @SteelToe 我想一次只显示一个 EditText。 EX:标题可见,其他不可见。当用户输入标题然后单击下一步按钮时,标题消失,描述 EditText 出现,依此类推。
  • 为什么不在视图上使用 setVisibilty 方法,传入 View.Gone 隐藏视图,然后使用 View.Visible 显示视图。请参阅此处的文档developer.android.com/reference/android/view/…

标签: android android-layout android-fragments android-edittext


【解决方案1】:
    <?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">


    <LinearLayout
        android:id="@+id/imagesLayout"
        android:layout_width="match_parent"
        android:layout_height="400dp"
        android:orientation="horizontal">
        <ImageView
            android:id="@+id/iv_image1"
            android:layout_width="50dp"
            android:layout_height="50dp"/>
        <ImageView
            android:id="@+id/iv_image2"
            android:layout_width="50dp"
            android:layout_height="50dp"/>
        <ImageView
            android:id="@+id/iv_image3"
            android:layout_width="50dp"
            android:layout_height="50dp"/>
        <ImageView
            android:id="@+id/iv_image4"
            android:layout_width="50dp"
            android:layout_height="50dp"/>
        <ImageView
            android:id="@+id/iv_image5"
            android:layout_width="50dp"
            android:layout_height="50dp"/>
        <ImageView
            android:id="@+id/iv_image6"
            android:layout_width="50dp"
            android:layout_height="50dp"/>

        <TextView
            android:id="@+id/tv_multi_selection"
            android:layout_width="80dp"
            android:layout_height="20dp"
            android:background="@color/blue5"
            android:text="Images" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        android:orientation="horizontal">


        <EditText
            android:id="@+id/input_title"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="20dp"
            android:ems="10"
            android:hint="Title"
            android:inputType="textPersonName"
            android:padding="7dp"
            android:singleLine="true"
            android:textSize="14sp" />


        <EditText
            android:id="@+id/input_description"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_margin="20dp"
            android:ems="10"
            android:hint="Description"
            android:inputType="textMultiLine"
            android:padding="7dp"
            android:singleLine="true"
            android:visibility="gone"
            android:textSize="14sp" />


        <EditText
            android:id="@+id/input_price"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="20dp"
            android:ems="10"
            android:hint="Price"
            android:inputType="numberDecimal"
            android:padding="7dp"
            android:visibility="gone"
            android:textSize="14sp" />

        <EditText
            android:id="@+id/input_country"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="20dp"
            android:ems="10"
            android:visibility="gone"
            android:hint="Country"
            android:inputType="textCapWords"
            android:padding="7dp"
            android:textSize="14sp" />


        <EditText
            android:id="@+id/input_state_province"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="20dp"
            android:ems="10"
            android:visibility="gone"
            android:hint="State/Province/Region"
            android:inputType="textCapWords"
            android:padding="7dp"
            android:textSize="14sp" />


        <EditText
            android:id="@+id/input_city"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="20dp"
            android:ems="10"
            android:hint="City"
            android:inputType="textCapWords"
            android:padding="7dp"
            android:textSize="14sp"
            android:visibility="gone"/>
        <EditText
            android:id="@+id/input_email"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="20dp"
            android:ems="10"
            android:hint="Your Contact Email"
            android:inputType="textEmailAddress"
            android:padding="7dp"
            android:textSize="14sp"
            android:visibility="gone"/>

        <Button
            android:id="@+id/btn_post"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="20dp"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_marginTop="50dp"
            android:background="@color/colorPrimary"
            android:text="Post"
            android:visibility="gone"
            android:textColor="@android:color/white" />

        <ProgressBar
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:id="@+id/progressBar"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="120dp"
            android:visibility="gone"/>

    </LinearLayout>

    <Button
        android:id="@+id/btn_right"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginLeft="10dp"
        android:layout_marginTop="8dp"
        android:layout_marginRight="10dp"
        android:layout_marginBottom="20dp"
        android:background="@color/colorPrimary"
        android:text="Next"
        android:textColor="@android:color/white"
        android:layout_alignParentBottom="true"
        />


</LinearLayout>

试试这个我删除了水平滚动条,因为它没有用。尝试添加滚动视图以获得更好的用户体验。并且在 .java 中,您可以检查 edittext 是否为空,如果不为空,则将 edittext 视图设置为消失示例edittext.setVisibilty(View.GONE);,然后将下一个 edittext 设置为可见。例如edittext2.setVisibilty(View.VISIBLE);

【讨论】:

    【解决方案2】:

    为您的“下一个按钮”设置一个监听器。编辑示例代码以包含您的按钮 ID。然后为您的文本视图创建变量。也可以通过 id 找到它们。然后使用变量检查文本视图的可见性。如果它可见,则将其隐藏并显示下一个视图。

     final Button button = findViewById(R.id.button_id);
        button.setOnClickListener(new View.OnClickListener() {
                 if (tv1.getVisibility() == View.VISIBLE) {
                     tv1.setVisibility(View.GONE);
                     tv2.setVisibility(View.VISIBLE);
                     return;
                 }
                 if (tv2.getVisibility() == View.VISIBLE) {
                     tv2.setVisibility(View.GONE);
                     tv3.setVisibility(View.VISIBLE);
                     return;
                 }
                 //continue as in the example for all your text views.
    
                }
              });
    

    【讨论】:

      猜你喜欢
      • 2017-10-11
      • 2022-01-22
      • 1970-01-01
      • 2014-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      相关资源
      最近更新 更多