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. 问题解决,终于可以忙下一个项目了(╯‵□′)╯︵┻━┻

猜你喜欢

转载自blog.csdn.net/m0_37864018/article/details/79684641