Android 中 Fragment 中的布局未浮动在键盘上方
Layout is not floating above keyboard in Fragment in Android
我的布局有两个编辑文本和水平滚动条,片段中有一些图标。
水平滚动视图使用相对布局约束永久固定在父视图的底部。
单击编辑时,默认会出现软键盘。
当这种情况发生时,我需要水平滚动视图浮动在软键盘上方,以便每个人都可以使用它。
我已将以下行添加到 AndroidManifest.xml 文件到包含片段
的 activity
android:windowSoftInputMode="adjustResize"
视图仍然没有按预期工作。
我该如何解决这个问题?
当前屏幕:
没有键盘的当前屏幕
[Current Screen w/o keyboard]1
带键盘的当前屏幕
[Current Screen with keyboard]2
预期屏幕
没有键盘的预期屏幕
[Expected Screen w/o keyboard]3
带键盘的预期屏幕
[Exoected Screen with keyboard]4
这里是 片段 xml 文件。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<io.github.mthli.knife.KnifeText
android:id="@+id/edt_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/title_notes_add"
android:background="@android:color/transparent"
android:hint="Content"
android:padding="12dp"
android:textSize="20sp"
app:historyEnable="true"
app:historySize="20" />
<EditText
android:id="@+id/title_notes_add"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:hint="Title"
android:minLines="1"
android:padding="12dp"
android:textSize="24sp"
android:textStyle="bold" />
<HorizontalScrollView
android:id="@+id/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@android:color/white"
android:scrollbars="none">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageButton
android:id="@+id/undo"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?android:selectableItemBackground"
android:contentDescription="@null"
android:scaleType="center"
android:src="@drawable/ic_undo" />
<ImageButton
android:id="@+id/redo"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?android:selectableItemBackground"
android:contentDescription="@null"
android:scaleType="center"
android:src="@drawable/ic_redo" />
<ImageButton
android:id="@+id/bold"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?android:selectableItemBackground"
android:contentDescription="@null"
android:scaleType="center"
android:src="@drawable/ic_format_bold" />
<ImageButton
android:id="@+id/italic"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?android:selectableItemBackground"
android:contentDescription="@null"
android:scaleType="center"
android:src="@drawable/ic_format_italic" />
<ImageButton
android:id="@+id/underline"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?android:selectableItemBackground"
android:contentDescription="@null"
android:scaleType="center"
android:src="@drawable/ic_format_underlined" />
<ImageButton
android:id="@+id/strikethrough"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?android:selectableItemBackground"
android:contentDescription="@null"
android:scaleType="center"
android:src="@drawable/ic_strikethrough" />
<ImageButton
android:id="@+id/bullet"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?android:selectableItemBackground"
android:contentDescription="@null"
android:scaleType="center"
android:src="@drawable/ic_format_list_bulleted" />
<ImageButton
android:id="@+id/quote"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?android:selectableItemBackground"
android:contentDescription="@null"
android:scaleType="center"
android:src="@drawable/ic_format_quote" />
<ImageButton
android:id="@+id/link"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?android:selectableItemBackground"
android:contentDescription="@null"
android:scaleType="center"
android:src="@drawable/ic_insert_link" />
<ImageButton
android:id="@+id/clear"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?android:selectableItemBackground"
android:contentDescription="@null"
android:scaleType="center"
android:src="@drawable/ic_format_clear" />
</LinearLayout>
</HorizontalScrollView>
</RelativeLayout>
我哪里出错了,我该如何解决?
您需要在清单中添加一行来调整 Activity 中的屏幕可见性。
android:windowSoftInputMode="stateVisible|adjustPan"
所以 Manifest 中的 activity 标签应该是这样的:
<activity
android:name=".MainActivity"
android:windowSoftInputMode="stateVisible|adjustPan"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
在每个 onCreateView 的片段调用中试试这个
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
我的布局有两个编辑文本和水平滚动条,片段中有一些图标。
水平滚动视图使用相对布局约束永久固定在父视图的底部。
单击编辑时,默认会出现软键盘。 当这种情况发生时,我需要水平滚动视图浮动在软键盘上方,以便每个人都可以使用它。
我已将以下行添加到 AndroidManifest.xml 文件到包含片段
的 activityandroid:windowSoftInputMode="adjustResize"
视图仍然没有按预期工作。
我该如何解决这个问题?
当前屏幕:
没有键盘的当前屏幕 [Current Screen w/o keyboard]1
带键盘的当前屏幕 [Current Screen with keyboard]2
预期屏幕
没有键盘的预期屏幕 [Expected Screen w/o keyboard]3
带键盘的预期屏幕 [Exoected Screen with keyboard]4
这里是 片段 xml 文件。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<io.github.mthli.knife.KnifeText
android:id="@+id/edt_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/title_notes_add"
android:background="@android:color/transparent"
android:hint="Content"
android:padding="12dp"
android:textSize="20sp"
app:historyEnable="true"
app:historySize="20" />
<EditText
android:id="@+id/title_notes_add"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/transparent"
android:hint="Title"
android:minLines="1"
android:padding="12dp"
android:textSize="24sp"
android:textStyle="bold" />
<HorizontalScrollView
android:id="@+id/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@android:color/white"
android:scrollbars="none">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<ImageButton
android:id="@+id/undo"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?android:selectableItemBackground"
android:contentDescription="@null"
android:scaleType="center"
android:src="@drawable/ic_undo" />
<ImageButton
android:id="@+id/redo"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?android:selectableItemBackground"
android:contentDescription="@null"
android:scaleType="center"
android:src="@drawable/ic_redo" />
<ImageButton
android:id="@+id/bold"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?android:selectableItemBackground"
android:contentDescription="@null"
android:scaleType="center"
android:src="@drawable/ic_format_bold" />
<ImageButton
android:id="@+id/italic"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?android:selectableItemBackground"
android:contentDescription="@null"
android:scaleType="center"
android:src="@drawable/ic_format_italic" />
<ImageButton
android:id="@+id/underline"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?android:selectableItemBackground"
android:contentDescription="@null"
android:scaleType="center"
android:src="@drawable/ic_format_underlined" />
<ImageButton
android:id="@+id/strikethrough"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?android:selectableItemBackground"
android:contentDescription="@null"
android:scaleType="center"
android:src="@drawable/ic_strikethrough" />
<ImageButton
android:id="@+id/bullet"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?android:selectableItemBackground"
android:contentDescription="@null"
android:scaleType="center"
android:src="@drawable/ic_format_list_bulleted" />
<ImageButton
android:id="@+id/quote"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?android:selectableItemBackground"
android:contentDescription="@null"
android:scaleType="center"
android:src="@drawable/ic_format_quote" />
<ImageButton
android:id="@+id/link"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?android:selectableItemBackground"
android:contentDescription="@null"
android:scaleType="center"
android:src="@drawable/ic_insert_link" />
<ImageButton
android:id="@+id/clear"
android:layout_width="48dp"
android:layout_height="48dp"
android:background="?android:selectableItemBackground"
android:contentDescription="@null"
android:scaleType="center"
android:src="@drawable/ic_format_clear" />
</LinearLayout>
</HorizontalScrollView>
</RelativeLayout>
我哪里出错了,我该如何解决?
您需要在清单中添加一行来调整 Activity 中的屏幕可见性。
android:windowSoftInputMode="stateVisible|adjustPan"
所以 Manifest 中的 activity 标签应该是这样的:
<activity
android:name=".MainActivity"
android:windowSoftInputMode="stateVisible|adjustPan"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
在每个 onCreateView 的片段调用中试试这个
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);