SoftKeyboard隐藏EditText

我有一个使用EditText让用户search数据库和填充ListView的布局。 EditText大约是屏幕顶部2/3的位置(位于ImageView上方,后面跟着一些介绍文字)。

问题是软键盘隐藏了EditText,所以用户看不到他在input什么内容。 (我禁用了自动提示。)

我已经尝试了LinearLayout,RelativeLayout,填充和不同的路线/中心,但我仍然无法让它正常工作。 EditText要么隐藏起来,要么从屏幕顶部被推开,或者被“挤压”和扭曲。

build议???

一种可能的解决方法是将EditText移动到屏幕的顶部。 但是,这偏离了我所得到的平面devise。

另一个可能的解决方法是让我打开全屏软键盘(不知道如何,但)。 这仍然会隐藏EditText,但是我可以重新启用自动build议,以便用户可以看到他正在input什么内容……因为他只能看到他正在键入的build议

这是我最近的尝试。 请参阅“introFrame”。

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="fill_parent" android:orientation="vertical"> <LinearLayout android:id="@+id/titleContainer" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:text="@string/title_string" android:textSize="15sp" android:textColor="#FFFFFF" android:textStyle="bold" android:paddingLeft="5dp" android:layout_height="fill_parent" android:layout_width="wrap_content" /> </LinearLayout> <FrameLayout android:id="@+id/introFrame" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" > <ImageView android:src="@drawable/main_search_image" android:scaleType="center" android:layout_gravity="center" android:layout_height="wrap_content" android:layout_width="wrap_content"/> <LinearLayout android:orientation="vertical" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:paddingTop="140dp" > <LinearLayout android:id="@+id/introSearchContainer" android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_vertical" > <LinearLayout android:orientation="horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" > <EditText android:id="@+id/intro_search_box" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint=" Enter keyword " android:imeOptions="actionGo" android:inputType="textFilter" android:maxLines="1" /> </LinearLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" > <Button android:id="@+id/intro_search_button" android:background="@drawable/custom_button_go" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout> <TextView android:text="@string/search_intro" android:textSize="15sp" android:textColor="#FFFFFF" android:layout_height="wrap_content" android:layout_width="fill_parent" /> </LinearLayout> </FrameLayout> <LinearLayout android:id="@+id/listContainer" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ListView android:id="@+id/itemlist" android:layout_width="wrap_content" android:layout_height="wrap_content" android:cacheColorHint="#00000000" /> <TextView android:text="No data found" android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:textSize="16sp" android:textColor="#FFFFFF" android:id="@+id/android:empty" /> </LinearLayout> </LinearLayout> 

Solutions Collecting From Web of "SoftKeyboard隐藏EditText"

你要找的是Activity的windowSoftInputMode属性。 你在你的AndroidManifest.xml文件中设置它,并给它一个值,如:

  • adjustResize :“活动的主窗口总是resize,为屏幕上的软键盘腾出空间。
  • adjustPan :“活动的主窗口没有为软键盘调整空间,而是自动调整窗口的内容,使当前的焦点永远不会被键盘遮挡,用户总是可以看到他们正在input的内容。通常不如resize,因为用户可能需要closures软键盘才能与窗口的隐蔽部分进行交互。

只要您将布局封装在ScrollView中,adjustResize就可能适用于您。 如果在背景中有一个位图图像,它可能会有负面影响,因为它也将被resize,在这种情况下,您可能需要使用adjustPan。

 <activity android:windowSoftInputMode="adjustResize" /> 

要么

 <activity android:windowSoftInputMode="adjustPan" /> 

更多信息可以在上面的链接中find。

什么工作对我来说是放弃我的最高层级的LinearLayout在一个scrollView(ScrollView只能有一个孩子)。 这允许整个活动/窗体向上滚动,而不是杂乱的EditText焦点。

首先,我设定了我的活动:

 <activity android:windowSoftInputMode="adjustPan" /> 

然后我做了我正在谈论的ScrollView的事情:

 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- STUFF --> </LinearLayout> </ScrollView> 

只是在清单中使用以下…

  <activity android:windowSoftInputMode="adjustPan"> 

尝试给编辑文本一个layout_weight(即layout_weight = 1),这可能会对其他布局项目有一些其他影响,但是这可能会帮助它在popup软键盘时保持可见