Android-UI-关于View-一种toolbar和ScrollView同时存在且软键盘遮挡ScrollView中的Edittext的解决办法

问题描述

前段时间在忙工作室的招新app的时候遇到了一种难缠的情况,描述一下出问题的布局:

<RelativeLayout ...>
    <ImageView.../>  <!--这三个控件可以可以看成一个toolbar-->
    <ImageView.../>  <!--工作室的图案,名称之类的,需要一直保持在这个位置-->
    <TextView.../>
    <ScrollView>    <!--ScrollView在上面上个控件之下-->
        <Edittext.../>   <!--接下来是好几个Edittext,多到必须用ScrollView滑动才能看完-->
        <Edittext.../>
        <Edittext.../>
        <Edittext.../>
    </ScrollView>
</RelativeLayout>

需求是点击Edittext的时候需要屏幕移动到该Edittext所在位置(最上方的3个控件要保持原来的位置,一直不变),且软键盘不能遮挡

尝试的方法

  • 首先想到的是在Manifest里面给对应的Activity设置android:windowSoftInputMode="adjustPan"属性,但是会遇到ScrollView上面的3个控件一齐被挤出了屏幕之外,效果非常丑陋。

  • 上面的方法不行后,尝试过通过监听被点击的Edittext在屏幕中的相对位置,计算尺ScrollView需要移动的距离,并使用ScrollView的scrollTo方法手动移动至目标位置(这方法有点蠢),但是太复杂了,最终没有采用。

  • Google,必应的其他方法都是剑走偏锋。

解决方法

  1. 给RelativeLayout设定 android:fitsSystemWindows="true"属性。
  2. 给ScrollView设定android:overScrollMode="never"。
  3. 在Manifest里面为Activity设定android:windowSoftInputMode="stateUnchanged|adjustResize|stateHidden"属性。
  4. 问题解决,终于可以忙下一个项目了(╯‵□′)╯︵┻━┻
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,005评论 25 708
  • 昨天遇见了发小,无意间说起了W君。发小说:“W君应该是当年我们班最man的人。” W君是什么样的人呢? 曾经我的回...
    楚家观月酱阅读 516评论 0 0