我有一个包含片段的活动,并且该片段包含自定义视图。自定义视图包含一个编辑文本,其正下方是一个高度为 match_parent 的回收视图。当用户将焦点放在编辑文本上时,会出现一个软输入键盘。不幸的是,该键盘隐藏了其下方一半的回收视图。我希望 recyclerview 调整大小到屏幕的剩余可见高度(在编辑文本下),以便列表中的项目不会被键盘隐藏。
我尝试为清单中的活动设置 adjustmentresize 但没有效果:
android:windowSoftInputMode="adjustResize"
我尝试将我的应用程序主题设置为基本主题(以防我的自定义主题中的某些内容导致问题) - 没有效果:
android:theme="@style/Theme.AppCompat.NoActionBar"
我已经检查过,以确保在层次结构中的任何地方都没有框架布局到必须调整大小的视图(我读到一个SO线程,这可能是一个问题)-没有。
我已经检查了活动、片段、自定义视图和连接的每个适配器,以确保我没有在任何地方调用 getWindow (我没有)。
自定义视图在运行时从视图存根中扩充。这能有联系吗?
Edit:
父级的内容:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/parent_root"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
...
<ViewStub
android:id="@+id/viewstub_outername"
android:layout="@layout/viewstub_thatIneed"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
</RelativeLayout>
视图存根的内容:
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/viewstub_root"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:background="@android:color/white"
>
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="20dp"
android:visibility="invisible"
/>
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview2"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="20dp"
android:visibility="invisible"
/>
</RelativeLayout>
如此显示键盘:
public static void showSoftKeyboard(Activity activity) {
View view = activity.getCurrentFocus();
InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);
}