android - 线性布局内的 ScrollView 导致出现软键盘

标签 android scrollview android-softkeyboard

我有一个包含许多编辑文本字段的 linerlayout。这一切都在纵向模式下按预期工作,特别是软键盘只有在点击一个编辑文本字段后才会出现。

但是,当设备旋转到横向模式时,底部的几个编辑文本从屏幕底部消失,无法访问它们。

解决方案看起来很简单,在最顶层的线性布局下添加一个 ScrollView ,并创建一个线性布局来包含所有的编辑文本。

这解决了滚动问题,但现在第一个编辑文本会自动获得焦点并弹出软键盘。

我已经尝试将焦点设置到隐藏的 TextView 并显式隐藏键盘,但没有什么能阻止显示键盘。

这是(大部分)有问题的布局 xmal 文件:-

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent" android:layout_height="match_parent" 
    android:orientation="vertical"
    android:showDividers="none"
    android:background="#ffffff"
    android:paddingTop="10dp"
    android:paddingLeft="5dp"
    android:paddingRight="5dp">

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/scrollView" >

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

        <TableLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:stretchColumns="*">

...

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Subject"
            android:id="@+id/textView3"
            android:textStyle="bold" />

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/subject"
            android:editable="false"
            android:ellipsize="end"
            android:singleLine="true"
            android:textStyle="bold"
            android:inputType="textCapWords"
            android:background="@drawable/apptheme_edit_text_holo_light" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Event Text"
            android:id="@+id/textView4"
            android:textStyle="bold" />

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textMultiLine|textCapSentences"
            android:id="@+id/text"
            android:linksClickable="false"
            android:enabled="true"
            android:editable="true"
            android:capitalize="sentences"
            android:nestedScrollingEnabled="true"
            android:minLines="3"
            android:gravity="top"
            android:background="@drawable/apptheme_edit_text_holo_light" />

...

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:text="Additional Comments"
            android:id="@+id/textView6"
            android:textStyle="bold" />

        <EditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="textMultiLine|textCapSentences"
            android:id="@+id/comments"
            android:minLines="3"
            android:gravity="top"
            android:editable="true"
            android:nestedScrollingEnabled="true"
            android:textAlignment="gravity"
            android:background="@drawable/apptheme_edit_text_holo_light" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="New Text"
            android:id="@+id/id"
            android:visibility="gone" />
    </LinearLayout>
</ScrollView>

谁能告诉我我做错了什么,或者如何在点击编辑文本之前抑制键盘。

非常感谢

最佳答案

将此添加到您遇到问题的 Activity 标签(Android list )中:

android:windowSoftInputMode="stateHidden"

您可以像这样以编程方式执行此操作:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

关于android - 线性布局内的 ScrollView 导致出现软键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32104860/

相关文章:

android - 光线交集,光线究竟是什么,OpenGL-ES?

Android如何在按下按钮时使ProgressBar(圆圈)覆盖全屏?

swift - ScrollView + NavigationView 动画故障 SwiftUI

android - SQLITEASSETHELPER 正确的升级脚本

android - Android 中的一些下载问题

Android,GridLayout 的水平和垂直滚动

Android:如何监听滚动事件?

android - EditText - 键盘没有出现在焦点上

android - 软键盘覆盖EditText下方的TextView

android - AlertDialog.Builder 中 EditText 的自动键盘显示