我有一个布局,它使用 EditText 让用户搜索数据库并填充 ListView.EditText 大约是屏幕顶部的 2/3(位于 ImageView 上方,然后是一些介绍性文本.)
I have a layout that uses an EditText to let users search a database and populate a ListView. The EditText is about 2/3 of the way from the top of the screen (positioned over an ImageView, and followed by some intro text.)
问题是软键盘隐藏了 EditText,所以用户看不到他在输入什么.(我禁用了自动建议.)
The problem is that the soft keyboard hides the EditText, so the user can't see what he's typing. (I disabled the auto-suggest.)
我已经尝试过 LinearLayout、RelativeLayout、填充和不同的对齐/居中,但我仍然无法让它正常工作.EditText 要么被隐藏,要么被推离屏幕顶部,要么被压扁"并扭曲.
I've tried LinearLayout, RelativeLayout, paddings, and different alignments/centerings, but I still can't get it to work right. The EditText is either hidden, gets pushed off the top of the screen, or get "squished" and distorted.
建议???
一种可能的解决方法是将 EditText 移动到屏幕顶部.但是,这与我得到的图形设计有所不同.
One possible workaround is to move the EditText to the top of the screen. However, this deviates from the graphic design that I was given.
另一个可能的解决方法是让软键盘全屏打开(但不确定如何).这仍然会隐藏 EditText,但随后我可以重新启用自动建议,以便用户可以看到他正在输入的内容......有点......因为他只能看到 suggestions 的内容他在打字.
Another possible workaround is for me to make the soft keyboard open in full screen (not sure how, though). This will still hide the EditText, but then I can re-enable the auto-suggestion so the user can see what he's typing... sort of... because he can only see the suggestions for what he's typing.
这是我最近的尝试.参见introFrame".
Here's my latest attempt. See "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>
你要找的是Activity的windowSoftInputMode
属性.你在你的 AndroidManifest.xml 文件中设置它,并给它一个值,例如:
What you're looking for is the Activity's windowSoftInputMode
attribute. You set this in your AndroidManifest.xml file, and give it a value such as:
adjustResize
:Activity 的主窗口总是调整大小,以便为屏幕上的软键盘腾出空间."adjustPan
:活动的主窗口没有调整大小来为软键盘腾出空间.相反,窗口的内容会自动平移,这样当前的焦点就不会被键盘和用户始终可以看到他们正在输入的内容.这通常不如调整大小,因为用户可能需要关闭软键盘才能到达窗口的模糊部分并与之交互."adjustResize
: "The activity's main window is always resized to make room for the soft keyboard on screen."adjustPan
: "The activity's main window is not resized to make room for the soft keyboard. Rather, the contents of the window are automatically panned so that the current focus is never obscured by the keyboard and users can always see what they are typing. This is generally less desirable than resizing, because the user may need to close the soft keyboard to get at and interact with obscured parts of the window."adjustResize 可能对您有用,只要您将布局包装在 ScrollView 中.如果您在背景中有位图图像,它可能会产生负面影响,因为它也会被调整大小,在这种情况下,您可能需要使用 adjustPan.
adjustResize will probably work for you, as long as you wrap the layout in a ScrollView. It may have negative effects if you have a bitmap image in the background, as it will be resized as well, in which case you may want to use adjustPan instead.
<activity android:windowSoftInputMode="adjustResize" />
或
<activity android:windowSoftInputMode="adjustPan" />
更多信息可以在上面的链接中找到.
More information is available at the above link.
这篇关于SoftKeyboard 隐藏 EditText的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!