Android - 软键盘将我的活动布局推到屏幕外

Posted

技术标签:

【中文标题】Android - 软键盘将我的活动布局推到屏幕外【英文标题】:Android - Soft Keyboard pushes layout of my activity out of screen 【发布时间】:2011-05-06 01:48:01 【问题描述】:

我的activity的布局如下图。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_
   android:layout_
   android:orientation="vertical">

   <FrameLayout android:id="@+id/title_bar"
      android:layout_
      android:layout_
      android:background="@drawable/bg_title" />

   <LinearLayout android:id="@+id/main"
      android:
      android:layout_
      android:layout_weight="1">
         <ListView android:id="@+id/android:list"
            android:layout_
            android:layout_ />
         <TextView android:id="@+id/android:empty"
            android:layout_
            android:layout_ />
      </FrameLayout>
   </LinearLayout>

   <LinearLayout
      android:layout_
      android:layout_ >
      <EditText android:id="@+id/query"
         android:layout_
         android:layout_ 
         android:hint="Enter some search terms"
         android:singleLine="true" 
         android:layout_weight="1" />
      <Button android:id="@+id/btn_hide"
         android:layout_
         android:layout_
         android:background="@drawable/btn_hide"
         android:layout_marginLeft="6dip" />
   </LinearLayout>
 </LinearLayout>

因此,搜索框固定在屏幕底部。

但是,当用户单击 EditText 时,软键盘会出现并将布局推出屏幕之外,搜索框除外。

我刚刚开始使用 Android,所以我在这里做错了吗??

【问题讨论】:

【参考方案1】:

尝试在清单中为您的活动添加以下内容:

android:windowSoftInputMode="adjustPan"

【讨论】:

谢谢。这是我正在寻找的属性。但是,由于它的价值,我不得不使用“adjustResize”来让它按我的需要工作。 嗨,我也有同样的问题。但我不能使用“adjustResize”。因为我在底部有标签栏。如果我使用调整大小标签栏将被推到软键盘上方。我不想发生这种情况。所以如果有人有解决方案,请帮助我。【参考方案2】:

有兴趣的可以看看android:windowSoftInputMode="adjustPan"android:windowSoftInputMode="adjustResize"的区别:

“调整大小”

调整活动窗口的大小,为屏幕上的软键盘腾出空间。

“调整盘”

活动窗口的内容会自动平移,因此当前焦点永远不会被键盘挡住。这样用户就可以看到他们正在输入的内容。这通常不如调整大小可取,因为用户可能需要关闭软键盘才能到达窗口的模糊部分并与之交互。

Android Documentation

Cited link

【讨论】:

【参考方案3】:

@Raj 如果您正在使用选项卡式应用程序,则必须添加

android:windowSoftInputMode="adjustPan"

在您添加标签的Activity 上,这很可能是您的启动器活动。

这是我的代码中的一个 sn-p

<activity
   android:label="@string/app_name"
   android:name=".MainActivity" android:windowSoftInputMode="adjustPan">
   <intent-filter >
     <action android:name="android.intent.action.MAIN" />
     <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>

【讨论】:

以上是关于Android - 软键盘将我的活动布局推到屏幕外的主要内容,如果未能解决你的问题,请参考以下文章

避免 android 软键盘调整布局大小。或回调隐藏视图

出现软键盘时工具栏向上移动

Android - 如何在软键盘出现时调整弹出窗口

当活动在android中启动时如何隐藏软键盘?

[Android UI界面] 软键盘覆盖edittext 使用ScrollView的详解、、高手快来吧

软输入键盘将我的静态底部视图向上移动 Android Kotlin