Android – 软键盘将我的活动的布局推出屏幕

我的活动的布局如下所示。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <FrameLayout android:id="@+id/title_bar" android:layout_width="fill_parent" android:layout_height="25dip" android:background="@drawable/bg_title" /> <LinearLayout android:id="@+id/main" android:width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1"> <ListView android:id="@+id/android:list" android:layout_width="fill_parent" android:layout_height="fill_parent" /> <TextView android:id="@+id/android:empty" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </FrameLayout> </LinearLayout> <LinearLayout android:layout_width="fill_parent" android:layout_height="50dip" > <EditText android:id="@+id/query" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="Enter some search terms" android:singleLine="true" android:layout_weight="1" /> <Button android:id="@+id/btn_hide" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/btn_hide" android:layout_marginLeft="6dip" /> </LinearLayout> </LinearLayout> 

所以,search框被固定在屏幕的底部。

但是,当用户点击编辑文本时,软键盘显示出来,并将布局推出除了search框之外的屏幕。

我刚刚开始与Android,所以我在这里做错了什么?

Solutions Collecting From Web of "Android – 软键盘将我的活动的布局推出屏幕"

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

 android:windowSoftInputMode="adjustPan" 

对于那些有兴趣的, android:windowSoftInputMode="adjustPan"android:windowSoftInputMode="adjustResize"之间的区别:

“adjustResize”

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

“adjustPan”

活动窗口的内容会自动平移,以避免当前焦点被键盘阻挡。 这样用户可以看到他们正在input的内容。 这通常不如resize,因为用户可能需要closures软键盘才能与窗口的遮蔽部分进行交互。

Android文档

被引用的链接

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

android:windowSoftInputMode="adjustPan"

在添加选项卡的Activity中,这很可能是您的启动器活动。

这是我的代码片段

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