热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

我可以同时使用"adjustResize"软键盘行为和状态栏后面的工具栏吗?

如何解决《我可以同时使用"adjustResize"软键盘行为和状态栏后面的工具栏吗?》经验,为你挑选了1个好方法。

在我的Android应用程序中,对我来说使用adjustResize软键盘的行为至关重要.因此,用户可以向下滚动到其他UI元素,例如"继续"按钮.

我注意到adjustResize只有当我同时具有Manifest设置和android:fitsSystemWindows="true"布局根元素时才会有效.(如果我错了,请纠正我!)

但是android:fitsSystemWindows="true"工具栏不再位于状态栏后面.这很有道理,但不是我想要的.

当工具栏位于其后面时,状态栏具有与工具栏颜色相匹配的深色阴影.我所拥有的android:fitsSystemWindows="true"是一个无色的状态栏和一个比我想要的低24dp的工具栏.

为了adjustResize键盘行为,我会放弃匹配的彩色状态栏.但我的问题是,它们可能同时存在吗?我敢为美丽和无障碍做梦吗?

更有经验的人知道神奇的设置组合吗?或者,或许,作为一种解决方法,明确地为状态栏着色的方法?

供参考:

这些是具有RelativeLayout根元素的活动,其中一些是ListViews和EditTexts.

工具栏是 android.support.v7.widget.Toolbar

可能相关的风格项目:

true
false
@null

PS - 我已经阅读了几十个关于软键盘行为的类似问题,但无法找到任何对工具栏的意外影响有用的东西.反之亦然,很多关于工具栏/状态栏行为的Style问题,但看似没什么关系.从来没有,抱歉,如果我错过了什么!

提前谢谢了!

编辑

我一直在玩删除android:fitsSystemWindows="true"和添加更多ScrollViews或尝试将所有内容放入相同的ScrollView.这什么都不做.

如果我删除android:fitsSystemWindows="true"然后UI的底部被"胶合"到屏幕的底部 - 它不会"调整大小"而是粘贴到软键盘的顶部,就像我期望它与adjustResizeManifest中的set一样.

android:fitsSystemWindows="true"在根视图中进行设置会使UI像我期望的那样调整大小 - 但它也会使工具栏不再在statusBar后面绘制.

所以我仍然是我开始的地方:(

添加布局XML代码示例:


 

    
    

        
        
        
            
                
            
        


        
        
        
        

            

FRR.. 11

我找到了一个似乎与操作系统兼容的解决方案.首先设置fitSystemWindows = true您想要对窗口作出反应的视图,然后告诉它忽略顶部填充:

  ViewCompat.setOnApplyWindowInsetsListener(yourView, (view, insets) ->
      ViewCompat.onApplyWindowInsets(yourView,
          insets.replaceSystemWindowInsets(insets.getSystemWindowInsetLeft(), 0,
              insets.getSystemWindowInsetRight(), insets.getSystemWindowInsetBottom()))
  );

在此处阅读更多内容:https://medium.com/google-developers/why-would-i-want-to-fitssystemwindows-4e26d9ce1eec



1> FRR..:

我找到了一个似乎与操作系统兼容的解决方案.首先设置fitSystemWindows = true您想要对窗口作出反应的视图,然后告诉它忽略顶部填充:

  ViewCompat.setOnApplyWindowInsetsListener(yourView, (view, insets) ->
      ViewCompat.onApplyWindowInsets(yourView,
          insets.replaceSystemWindowInsets(insets.getSystemWindowInsetLeft(), 0,
              insets.getSystemWindowInsetRight(), insets.getSystemWindowInsetBottom()))
  );

在此处阅读更多内容:https://medium.com/google-developers/why-would-i-want-to-fitssystemwindows-4e26d9ce1eec


极好的答案。
推荐阅读
author-avatar
刘丹小宝0
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有