Android软键盘隐藏分割条

Android软键盘隐藏分割条,android,android-layout,Android,Android Layout,我有一个在运行时加载片段的活动。当我启动应用程序时,活动将加载一个带有EditText的片段。当箭头所示时,我将ActionBarSherlock与SplitActionBar一起使用,因此我有一个拆分栏(位于屏幕底部的一个操作栏)。当EditText获得焦点并加载软键盘时,它将位于分割条的顶部,并将其隐藏。在操作栏上,我还使用导航模式列表,并使用下拉菜单加载另一个片段。当我加载另一个片段时,下部的操作栏会正确地显示在软键盘的顶部,即使我转到另一个片段,它仍能正常工作。我将添加一些屏幕截图来清除

我有一个在运行时加载片段的活动。当我启动应用程序时,活动将加载一个带有EditText的片段。当箭头所示时,我将ActionBarSherlock与SplitActionBar一起使用,因此我有一个拆分栏(位于屏幕底部的一个操作栏)。当EditText获得焦点并加载软键盘时,它将位于分割条的顶部,并将其隐藏。在操作栏上,我还使用导航模式列表,并使用下拉菜单加载另一个片段。当我加载另一个片段时,下部的操作栏会正确地显示在软键盘的顶部,即使我转到另一个片段,它仍能正常工作。我将添加一些屏幕截图来清除它:

第一个片段加载程序,使用软键盘无法看到分割条

使用操作栏导航加载第二个片段后

重新加载另一个片段,操作栏仍然可见

我试着用最少的代码加载一个测试项目,结果是一样的,分割条被软键盘隐藏了。 如何从一开始就显示分割条

编辑:android:windowSoftInputMode=“adjustResize”不会更改此行为中的任何内容

活动布局:

<it.bem.remailr.MyFrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_container"
android:orientation="horizontal"
android:background="@drawable/bg_no_repeat"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />

片段布局:

<it.bem.remailr.MyRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >

<EditText
    android:id="@+id/editText1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="top|left"
    android:inputType="textMultiLine|textNoSuggestions"
    android:windowSoftInputMode="adjustPan"
    android:background="#00000000"
    android:hint="@string/text_hint"
    android:scrollHorizontally="false" >
</EditText>

<ProgressBar
    android:id="@+id/progressBar1"
    style="?android:attr/progressBarStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true" />


您是否尝试过在显示输入法之后立即向主线程发布布局请求?您可以通过覆盖根视图中的
onSizeChanged()
回调来确定是否显示/隐藏输入法。作为一个肮脏的概念证明,您可以在给定的持续时间后发布布局请求(确保预先显示输入方法)

您还可以使用来在设备上运行
层次查看器,而不是emulator,以确定存在的
视图(即,如果候选对象覆盖拆分操作栏)。但据我所知,候选视图被添加到包含
键盘视图的根
对话框
,因此拆分操作栏很可能就在空格键下方,而不是候选视图下方


为了实现
onSizeChanged()
必须扩展
视图组
类,该类位于
视图
层次结构的根。例如,您可以将
线性布局
作为根
视图组
,并且所有
视图
都是该视图的子视图。然后,您要做的是创建一个名为
MyLinearLayout
的新类,该类扩展
LinearLayout
,将
MyLinearLayout
作为xml文件中的根
视图
,然后实现
onSizeChanged()
回调。当显示输入法时,系统将调用它。

您确定这不仅仅是因为拼写建议隐藏了拆分操作栏吗?我在查看屏幕截图时是这样想的,但在加载第二个片段并返回编辑片段后,如果单击编辑文本,拼写建议将显示,但不会隐藏拆分栏。另一方面,谢谢你的书!我试过hierarchyviewer,但看不到上面的键盘。从hierarchyviewer发出requestLayout不会改变任何事情。如何覆盖根视图上的onSizeChanged()?根视图不是片段布局吗?我想我在这里犯了一些愚蠢的错误,否则其他人应该会注意到这一点。我已经更新了与onSizeChange()查询相关的答案。当你说你试过hierarchyviewer时,这是在模拟器中吗?谢谢。我在onSizeChanged()中放置了一个记录器,以查看何时调用它:当我启动应用程序并单击EditText时,会显示键盘,而不会调用onSizeChanged()。如果我像屏幕截图一样浏览导航过程,那么每次显示键盘时,都会调用onSizeChanged()。这在我的手机和模拟器上都会发生。对于hierarchyviewer,我使用了手机。快速尝试:android:WindowsofInputMode=“adjustPan”应该在活动上设置,而不是在给定视图上设置。尝试将该行移动到清单(请参阅)编辑:它是adjustResize,在活动上使用该行,它就工作了。谢谢