美文网首页
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