起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 245|回复: 12

[处理中] statusbar修改为透明栏,导致input 软键盘弹遮挡

[复制链接]

22

主题

93

帖子

520

积分

高级会员

Rank: 4

积分
520
QQ
发表于 2018-10-26 09:48:23 | 显示全部楼层 |阅读模式
是因为 statusbar 为透明时,不断获取焦点,导致焦点无法传递下去,而最终窗体不会根据 软键盘而改变。

6

主题

4万

帖子

8420

积分

版主

Rank: 7Rank: 7Rank: 7

积分
8420
QQ
发表于 2018-10-26 16:45:57 | 显示全部楼层
你是怎么设置透明的??
你是指手机状态栏吗?
这种方式吗?
http://docs.wex5.com/cordova-plugin-statusbar/
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

22

主题

93

帖子

520

积分

高级会员

Rank: 4

积分
520
QQ
 楼主| 发表于 2018-10-27 20:26:13 | 显示全部楼层
liangyongfei 发表于 2018-10-26 16:45
你是怎么设置透明的??
你是指手机状态栏吗?
这种方式吗?

是的。

同时我还在 andorid函数 initialize里面添加了中间一段,如下:
public void run() {
                    //if(StatusBar.this.isDisabled){
                        // Clear flag FLAG_FORCE_NOT_FULLSCREEN which is set initially
                        // by the Cordova.
                        Window window = cordova.getActivity().getWindow();
        //添加内容start
                        window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
                        window.addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
                        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
                        window.setStatusBarColor(Color.TRANSPARENT);
                        window.setNavigationBarColor(Color.TRANSPARENT);
        //添加内容end
                        window.clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
       
                        //Read 'StatusBarBackgroundColor' from config.xml, default is #000000.
                      //注释默认的设置背景色的方法
                        //setStatusBarBackgroundColor(preferences.getString("StatusBarBackgroundColor", "#000000"));
       
                        // Read 'StatusBarStyle' from config.xml, default is 'lightcontent'.
                        setStatusBarStyle(preferences.getString("StatusBarStyle", "lightcontent"));
                        
                    //}
            }
我网站也发现很多类似问题,就是设置状态栏透明后,页面焦点就会被抢去,导致软键盘弹出时覆盖当前页面,不会缩小挤压当前页面。
回复 支持 反对

使用道具 举报

22

主题

93

帖子

520

积分

高级会员

Rank: 4

积分
520
QQ
 楼主| 发表于 2018-10-27 20:28:09 | 显示全部楼层
liangyongfei 发表于 2018-10-26 16:45
你是怎么设置透明的??
你是指手机状态栏吗?
这种方式吗?

android ,IOS 都是一样的问题。 因为里面不断要刷新重绘当前页,因此就争夺了当前页的焦点,导致焦点事件不能传下去到具体 input ,textarea.
回复 支持 反对

使用道具 举报

6

主题

4万

帖子

8420

积分

版主

Rank: 7Rank: 7Rank: 7

积分
8420
QQ
发表于 2018-10-29 10:56:58 | 显示全部楼层
soibhan 发表于 2018-10-27 20:28
android ,IOS 都是一样的问题。 因为里面不断要刷新重绘当前页,因此就争夺了当前页的焦点,导致焦点事件 ...

那,不设置透明可以吗??或者选一个类似的半透明颜色,
不完全透明,稍微使用点其他颜色,还会这样吗?
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

22

主题

93

帖子

520

积分

高级会员

Rank: 4

积分
520
QQ
 楼主| 发表于 2018-11-2 09:50:30 | 显示全部楼层
liangyongfei 发表于 2018-10-29 10:56
那,不设置透明可以吗??或者选一个类似的半透明颜色,
不完全透明,稍微使用点其他颜色,还会这样吗? ...

只要不用这个 插件 ,焦点都不会受到影响。因为插件 statusbar 里面 执行都是通过 Android. run来循环执行, 调出 input ,textarea 时会导致 窗口重绘或大小改变,这时候就会触发 statusbar run函数执行,然后焦点就被拿去了。
回复 支持 反对

使用道具 举报

6

主题

4万

帖子

8420

积分

版主

Rank: 7Rank: 7Rank: 7

积分
8420
QQ
发表于 2018-11-2 10:11:20 | 显示全部楼层
soibhan 发表于 2018-11-2 09:50
只要不用这个 插件 ,焦点都不会受到影响。因为插件 statusbar 里面 执行都是通过 Android. run来循环执 ...

之前没遇到过这样问题啊,是什么型号版本手机会这样??
其他手机呢,都这样吗?你再确认下是手机版本原因还是插件本身就有问题
是3.8最新版本打包的吗??

如果不用这个插件呢,也不影响使用吧
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

22

主题

93

帖子

520

积分

高级会员

Rank: 4

积分
520
QQ
 楼主| 发表于 2018-11-2 10:38:45 | 显示全部楼层
liangyongfei 发表于 2018-11-2 10:11
之前没遇到过这样问题啊,是什么型号版本手机会这样??
其他手机呢,都这样吗?你再确认下是手机版本原 ...

所有型号手机都是这样,android, ios都是。  我是通过 Xcode10打包的。 我看了android的java代码都是这个原理导致的。IOS 版本基本都是新版本 11,12的。
回复 支持 反对

使用道具 举报

6

主题

4万

帖子

8420

积分

版主

Rank: 7Rank: 7Rank: 7

积分
8420
QQ
发表于 2018-11-2 11:09:48 | 显示全部楼层
soibhan 发表于 2018-11-2 10:38
所有型号手机都是这样,android, ios都是。  我是通过 Xcode10打包的。 我看了android的java代码都是这个 ...

statusbar 这个案例官方有提供,稍等,我本地打包测试一下
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

6

主题

4万

帖子

8420

积分

版主

Rank: 7Rank: 7Rank: 7

积分
8420
QQ
发表于 2018-11-2 11:32:20 | 显示全部楼层
soibhan 发表于 2018-11-2 10:38
所有型号手机都是这样,android, ios都是。  我是通过 Xcode10打包的。 我看了android的java代码都是这个 ...

本地测试案例
/UI2/demo/plugin/statusbar/demo.w
打包后,加上input 测试的

只有点这个按钮
状态栏浮动模式(是)
代码 : StatusBar.overlaysWebView(true);
才会导致  input 被 覆盖,  其他的不影响的
.
只要 设置 StatusBar.overlaysWebView(false);  ,那么就不会默认覆盖了,确实存在这个问题

所以如果想不覆盖 就 设置下 StatusBar.overlaysWebView(false); 就可以了!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2019-4-21 06:43 , Processed in 0.136462 second(s), 26 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表