美文网首页
ActionBar、ToolBar被软键盘顶上去

ActionBar、ToolBar被软键盘顶上去

作者: 小耗子_20da | 来源:发表于2020-07-18 10:50 被阅读0次

    1、场景描述

    在软键盘弹出时,如果EditText位置与底部距离小于软键盘高度时,一般软键盘会把EditText顶上去,那么整个Activity都会被顶上去,包括ActionBar或者ToolBar。

    2、需求

    其实我们并不希望ActionBar或者ToolBar被顶上去,只希望ActionBar或者ToolBar以下部分滚动即可。

    3、踩坑日记

    我记得以前在ActionBar或者ToolBar下面的布局外套一个滚动容器就可以了的,想都没想,直接套了个NestedScrollView,结果ToolBar还是被顶上去了,然后各种百度,各种测试,无果。网上有说套一个ScrollView,我当时想都是滚动容器NestedScrollView和ScrollView不都一样嘛,也没去改,下班了还搞了半个小时没搞定。

    4、填坑之旅

    第二天回到公司,把NestedScrollView换成ScrollView,居然可以了,难怪以前一直没有遇到过这样的问题,因为用的是ScrollView,
    总结:
    用ScrollView可以防止软键盘把ToolBar顶上去。可是,ScrollView自带滚动条,难看死了,果断加上去掉滚动条的属性,一测试,ToolBar又被顶上去了(ri le gou le)。

      android:scrollbars="none"
    

    再次总结:
    ScrollView一定要带滚动条,才能防止ToolBar被顶。
    辣么,问题来了,如果让NestedScrollView也显示滚动条,是不是也可以防止ToolBar被顶呢,测试结果和理想一样。
    再次总结:
    ScrollView和NestedScrollView都能防止ToolBar被顶,只要显示滚动条即可。
    可是,我就不想要滚动条呀,咋办?陷入沉思,那就把滚动条设为透明的或者把滚动条宽度设为0,这个思路应该ok,怎么设呢...习惯性先去源码看一眼有没有合适的属性,发现有个叫isScrollContainer的属性,注释介绍大概和软键盘有关,那就拿出来测试下吧。

    5、惊喜

    NestedScrollView中添加isScrollContainer属性,果然可以解决问题。

        <androidx.core.widget.NestedScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:isScrollContainer="true"
            android:overScrollMode="never">
    

    6、总结

    防止ActionBar和ToolBar被软键盘定出去的方法:

    1、如果使用NestedScrollView,则需添加属性

    android:isScrollContainer="true"

        <androidx.core.widget.NestedScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:isScrollContainer="true"
            android:overScrollMode="never">
    
    2、如果使用ScrollView,则需添加属性

    android:isScrollContainer="true"
    android:scrollbars="none"

        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:scrollbars="none"
            android:isScrollContainer="true"
            android:overScrollMode="never">
    

    踩坑不可怕,可怕的是同一个坑连踩两次,还不知道怎么解决,这里先做下笔记,免得下次遇上同样的问题,又忘了怎么解决了,每次都跑旧项目里翻代码,挺累的,都不记得上次的坑到底是在哪个项目里

    相关文章

      网友评论

          本文标题:ActionBar、ToolBar被软键盘顶上去

          本文链接:https://www.haomeiwen.com/subject/dnjxkktx.html