android - 在软键盘弹出后滚动到某个点,而不是在弹出之前

标签 android scrollview android-softkeyboard

好吧,基本上我希望我的 ScrollView 自动滚动到 EditText 的底部(在我的例子中,为了显示目的,我将最小高度设置得更大)。但经过一些搜索和大量试验后,我所能做的就是先滚动布局,然后键盘弹出并覆盖布局的其余部分,这里是一些屏幕截图:

This is what it does

This is what I want it to do

感谢我能得到的任何帮助。

XML 代码:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="match_parent"
              android:layout_height="wrap_content"
    android:padding="@dimen/activity_horizontal_margin"
    android:id="@+id/newResDetailsScroll"
    android:clickable="true">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Restaurant Name"
            android:id="@+id/newResName"
            android:singleLine="true"
            android:textSize="18sp"
            android:paddingTop="20dp"/>

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:paddingTop="20dp"
            android:layout_gravity="center_vertical">
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Restaurant Type:"
                android:textSize="18sp"/>
            <Spinner
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="135dp"
                android:id="@id/res_type"
                android:entries="@array/res_type"/>
            </RelativeLayout>

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="Restaurant Address"
            android:id="@+id/newResAddress"
            android:singleLine="true"
            android:textSize="18sp"
            android:paddingTop="20dp"/>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">
            <EditText
                android:layout_weight="1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="City"
                android:id="@+id/newResCity"
                android:singleLine="true"
                android:textSize="18sp"
                android:paddingTop="20dp"
                android:inputType="textAutoCorrect|textAutoComplete"/>
            <EditText
                android:layout_weight="1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="State"
                android:id="@+id/newResState"
                android:singleLine="true"
                android:textSize="18sp"
                android:paddingTop="20dp"/>
            <EditText
                android:layout_weight="1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="Zip"
                android:id="@+id/newResZip"
                android:singleLine="true"
                android:textSize="18sp"
                android:paddingTop="20dp"
                android:maxLength="5"
                android:inputType="number"/>
        </LinearLayout>

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Restaurant Hours:"
            android:textSize="18sp"
            android:paddingTop="20dp"/>

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:padding="20dp">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Sunday:"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="12:00 am  -"
                android:layout_marginLeft="80dp"
                android:onClick="time"
                android:id="@+id/sunOpen"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="12:00 pm"
                android:layout_marginLeft="155dp"
                android:onClick="time"
                android:id="@+id/sunClose"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="20dp"
                android:text="Monday:"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="12:00 am  -"
                android:layout_marginTop="20dp"
                android:layout_marginLeft="80dp"
                android:onClick="time"
                android:id="@+id/monOpen"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="12:00 pm"
                android:layout_marginTop="20dp"
                android:layout_marginLeft="155dp"
                android:onClick="time"
                android:id="@+id/monClose"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="40dp"
                android:text="Tuesday:"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="12:00 am  -"
                android:layout_marginTop="40dp"
                android:layout_marginLeft="80dp"
                android:onClick="time"
                android:id="@+id/tuesOpen"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="12:00 pm"
                android:layout_marginTop="40dp"
                android:layout_marginLeft="155dp"
                android:onClick="time"
                android:id="@+id/tuesClose"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="60dp"
                android:text="Wednesday:"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="12:00 am  -"
                android:layout_marginTop="60dp"
                android:layout_marginLeft="80dp"
                android:onClick="time"
                android:id="@+id/wedOpen"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="12:00 pm"
                android:layout_marginTop="60dp"
                android:layout_marginLeft="155dp"
                android:onClick="time"
                android:id="@+id/wedClose"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="80dp"
                android:text="Thursday:"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="12:00 am  -"
                android:layout_marginTop="80dp"
                android:layout_marginLeft="80dp"
                android:onClick="time"
                android:id="@+id/thuOpen"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="12:00 pm"
                android:layout_marginTop="80dp"
                android:layout_marginLeft="155dp"
                android:onClick="time"
                android:id="@+id/thuClose"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="100dp"
                android:text="Friday:"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="12:00 am  -"
                android:layout_marginTop="100dp"
                android:layout_marginLeft="80dp"
                android:onClick="time"
                android:id="@+id/friOpen"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="12:00 pm"
                android:layout_marginTop="100dp"
                android:layout_marginLeft="155dp"
                android:onClick="time"
                android:id="@+id/friClose"/>

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginTop="120dp"
                android:text="Saturday:"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="12:00 am  -"
                android:layout_marginTop="120dp"
                android:layout_marginLeft="80dp"
                android:onClick="time"
                android:id="@+id/satOpen"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="12:00 pm"
                android:layout_marginTop="120dp"
                android:layout_marginLeft="155dp"
                android:onClick="time"
                android:id="@+id/satClose"/>

        </RelativeLayout>

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Restaurant Description:"
            android:textSize="18dp"
            android:paddingTop="10dp"/>

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textMultiLine|textCapSentences|textAutoComplete|textAutoCorrect"
            android:layout_margin="10dp"
            android:padding="5dp"
            android:minHeight="150dp"
            android:gravity="top|left"
            android:maxLength="400"
            android:id="@+id/resDescription"
            android:background="@drawable/squarebox"
            android:hint="Example: Happy Hour..."/>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:paddingTop="20dp">

            <Button
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@color/colorPrimary"
                android:textColor="@color/textColor"
                android:text="Cancel"
                android:onClick="cancel"
                android:layout_weight="1"/>

            <Space
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight=".99"/>

            <Button
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@color/colorPrimary"
                android:textColor="@color/textColor"
                android:layout_weight="1"
                android:text="Next"
                android:onClick="next"/>

        </LinearLayout>
    </LinearLayout>
</ScrollView>

最佳答案

在与 Activity 对应的 android list 文件中试试这个。

android:windowSoftInputMode="adjustResize"

关于android - 在软键盘弹出后滚动到某个点,而不是在弹出之前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43245469/

相关文章:

java - 如何列出 xml 文件中的特定属性

android - 当我的设备在 Wi-Fi 中的特定范围内时如何限制我的移动应用程序。我想在 Android 中制作像 sonic wall 或防火墙这样的应用程序?

ios - 在 Swift 中从 UIScrollView 创建一个 PDF 文件

android - 如何同时拥有 singleLine ="false"和 imeOptions ="actionNext"用于 EditText?

打开软键盘时,Android pie edittext 键入的文本不显示

android - 如何加快我的Android-openCV应用程序的速度?

java - 安卓/Linux : Log (power) key usage on lower system level

python - 如何通过拖动 slider 来控制我的 Kivy ScrollView ?

android - 如何在 Android 中启用水平滚动?

android - 键盘隐藏了WebView中的输入框