android - 全屏缺口键盘调整大小问题
问题描述
我有一个在缺口(显示切口)模式下具有全屏布局的活动。我想要以下行为:
我尝试添加android:windowSoftInputMode="adjustResize"
我的 android 清单,并从我的活动布局中的ScrollView开始。问题是:如果我添加android:fitsSystemWindows="true"
到 ScrollView 我得到了正确的行为,但活动从全屏模式退出。
如何实现正确的节省全屏缺口模式?
我的安卓清单:
<activity
android:name=".viewmodel.activities.account.PasswordRequestActivity"
android:label="@string/app_label"
android:screenOrientation="portrait"
android:theme="@style/AppThemeFlatColor"
android:windowSoftInputMode="adjustResize"/>
我的活动布局:
<?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:fillViewport="true">
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/bottom"
android:layout_width="match_parent"
android:layout_height="122dp"
android:layout_alignParentBottom="true"
android:layout_centerVertical="true"
android:orientation="vertical"
android:background="@color/solid_white">
<Button
android:id="@+id/requestpassword"
android:layout_width="match_parent"
android:layout_height="60dp"
android:textAllCaps="true"
android:layout_alignParentBottom="true"
android:background="@drawable/esg1a"
android:onClick="doForgotPasswordRequest"
android:text="@string/forgot_password_btn"
android:textColor="@color/default_color"
android:textAppearance="@style/TextAppearance.abc.Regular"
android:textSize="13sp"
android:contentDescription="@string/accessibility_requestpassword"/>
<RelativeLayout
android:id="@+id/layoutInsertMail"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_above="@id/requestpassword"
android:background="@drawable/esg3a">
<ImageView
android:id="@+id/iconmail"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginStart="16dp"
android:src="@drawable/esb_icon_mail"/>
<EditText
android:id="@+id/requestEmail"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_toEndOf="@id/iconmail"
android:layout_marginStart="20dp"
android:ems="10"
android:background="@null"
android:hint="@string/login_email_hint"
android:textSize="13sp"
android:inputType="textEmailAddress"
android:textAppearance="@style/TextAppearance.abc.Regular"
android:contentDescription="@string/accessibility_emailrecoverpassword"/>
</RelativeLayout>
</LinearLayout>
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_above="@id/bottom"
android:layout_width="match_parent"
android:layout_height="match_parent"
/>
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:minHeight="?attr/actionBarSize"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
android:background="@android:color/transparent" />
<View
android:id="@+id/overlay"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#BF000000"
android:visibility="gone"
android:layout_above="@id/bottom"/>
</RelativeLayout>
</ScrollView>
在 My v28 styles.xml 添加到 AppThemeFlatColor 主题:
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
解决了
找到解决方案
将以下代码添加到活动中:
@Override
protected void onResume() {
super.onResume();
ViewCompat.setOnApplyWindowInsetsListener(getWindow().getDecorView(), (view, insets) ->
ViewCompat.onApplyWindowInsets(getWindow().getDecorView(),
insets.replaceSystemWindowInsets(insets.getSystemWindowInsetLeft(), 0,
insets.getSystemWindowInsetRight(), insets.getSystemWindowInsetBottom()))
);
}
并添加到 ScrollView:
android:fitsSystemWindows="true"
解决方案
推荐阅读
- python - 使用 statsmodel 的 pandas 时间序列中单个比例的 95% 置信区间
- php - PHPMailer不发送pdf附件
- javascript - 带有滚动监听器的 SetTimeout 方法
- testing - Jmeter 从以前的线程组变量中选择一个随机值
- r - 增加R中堆积条形图中条形之间的空间
- python - 为什么我的 pyinstaller 可执行文件不起作用?
- android - 缺少 CustomImageLabelerOptions。我在哪里可以找到它?
- electron - 未捕获(承诺)DOMException:无法启动视频源
- r - 使用堆栈函数时遇到问题-R
- reactjs - React / Redux 主题:基于 Store State 的条件渲染