解决android 中在沉浸式布局下,EditText输入框在界面底部,在弹出输入法时将顶部标题栏向上推出界面问题
来源:互联网 发布:php数组相同键值相加 编辑:程序博客网 时间:2024/04/25 23:20
1.沉浸式布局的实现
在res/values/styles.xml文件中实现代码:
<resources>
<style name="AppTheme"parent="@style/BaseTheme">
</style>
<style name="BaseTheme"parent="Theme.AppCompat.Light.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
</style>
</resources>
在res文件夹下新建文件夹values-v19,在values-v19文件下新建文件style文件内容:
<?xml version="1.0"encoding="utf-8"?>
<resources>
<style name="AppTheme"parent="@style/BaseTheme">
<item name="android:windowTranslucentNavigation">true</item>
<item name="android:windowTranslucentStatus">true</item>
</style>
</resources>
//说明:windowTranslucentNavigation值为false时底部虚拟按键,黑色背景为true的可以根据布局来更改虚拟按键的背景颜色。
在android的配置文件中AndroidManifest.xml中设置主题:
<application
android:name=".BaseApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity"
android:windowSoftInputMode="adjustResize|stateHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
以上能够实现沉浸式布局。
android:windowTranslucentNavigation"=true android:windowTranslucentNavigation"=false
输入框在底部时,在弹出输入法时,会将顶部的标题栏顶出界面,为了解决这样的问题使用一个
AndroidBug5497Workaround类:
public class AndroidBug5497Workaround {
public static void assistActivity(Activity content) {
new AndroidBug5497Workaround(content);
}
private View mChildOfContent;
private int usableHeightPrevious;
private ViewGroup.LayoutParamsframeLayoutParams;
private AndroidBug5497Workaround(Activity activity) {
FrameLayout content = (FrameLayout) activity.findViewById(android.R.id.content);
mChildOfContent = content.getChildAt(0);
mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener(newViewTreeObserver.OnGlobalLayoutListener() {
public void onGlobalLayout() {
possiblyResizeChildOfContent();
}
});
frameLayoutParams =mChildOfContent.getLayoutParams();
}
private void possiblyResizeChildOfContent() {
int usableHeightNow = computeUsableHeight();
if (usableHeightNow !=usableHeightPrevious) {
//如果两次高度不一致
//将计算的可视高度设置成视图的高度
frameLayoutParams.height= usableHeightNow;
mChildOfContent.requestLayout();//请求重新布局
usableHeightPrevious= usableHeightNow;
}
}
private int computeUsableHeight() {
//计算视图可视高度
Rect r = new Rect();
mChildOfContent.getWindowVisibleDisplayFrame(r);
return (r.bottom);
}
}
需要在AndroidManifest该activity下添加:
android:windowSoftInputMode="adjustResize|stateHidden"
在该activity代码界面,在setContentView语句下添加
AndroidBug5497Workaround.assistActivity(MainActivity.this);
- 解决android 中在沉浸式布局下,EditText输入框在界面底部,在弹出输入法时将顶部标题栏向上推出界面问题
- 完全解决输入法覆盖EditText问题, 将界面所有EditText放在输入上方
- 在有EditText的界面 默认情况下不获取焦点(不弹出输入框)
- 当界面中出现多个输入框,在弹出输入法,保证输入法不盖住输入框的解决方案
- 当在edittext点击输入弹出输入法,底部菜单就被挤到输入法上面
- android点击位于底部Edittext弹出输入法后标题栏向上移动消失
- Android EditText在界面恢复时数据出现重复问题
- 解决EditText在输入状态下点击其他区域隐藏输入法的问题
- 解决输入框在底部问题
- 【转】 Android应用启动时,焦点直接在EditText上,输入法直接打开,影响界面美观。
- Android应用启动时,焦点直接在EditText上,输入法直接打开,影响界面美观。
- android实现顶部底部标题栏固定 中间可滚动,仿QQ空间的主界面布局
- 手机调用系统的拍照和裁剪功能,如果界面有输入框EditText,在一些手机会出现点击EditText会弹出输入法,却不能输入的情况。
- Android 解决沉浸式状态栏下,输入法弹出,布局不会自动调整的BUG
- Android 输入法弹出框挡住界面问题
- Android中删除标题栏和启动界面的时候弹出的标题栏(如果设置了不显示标题栏,在启动界面时仍然会显示几秒的标题再消失)
- android 开发中进入一个activity界面软键盘自动弹出解决(布局中有edittext)
- 解决html页面中含有input输入框fixed布局底部按钮在Android和ios中被弹起的问题
- Ubuntu Jdk卸载 Oracle Jdk安装
- UVA10917 Walk Through the Forest
- L1-040. 最佳情侣身高差 java
- 递归递推 G
- 【Python学习】python爬虫有道翻译的实现
- 解决android 中在沉浸式布局下,EditText输入框在界面底部,在弹出输入法时将顶部标题栏向上推出界面问题
- java中实现定时任务
- python中yield用法
- 内联函数
- POJ
- Windows DOS内部命令详解03——path、type、copy
- C++ — 模板的详解
- 《hive编程指南》阅读笔记摘要(九)
- JavaSE 学习参考:字符流