如何做好全屏化的交互体验(解决EditText导致的界面上移、挡住等问题)

本文介绍了如何处理EditText在全屏模式下键盘弹出导致的界面位移问题,通过将EditText放入独立布局并利用View.setSystemUiVisibility方法,实现了全屏化交互体验的优化。同时,详细解析了相关方法和标志的含义,提供了一个避免内容被挤压的解决方案。
摘要由CSDN通过智能技术生成

EditText导致的问题

在使用EditText并且将其放在屏幕底部的时候,往往会使用例如:

android:windowSoftInputMode="adjustResize|stateHidden"
 
 
 
  • 1
  • 1

等这样的参数,但是它有着很大的缺点,会导致界面上移、EditText被挡住的问题一些问题。

简单思考EditText键盘弹出后为什么导致界面上移呢?

不从代码层次上考虑,当键盘弹出后,键盘本身占据一定空间会致使EditText随之上移,EditText上移也会导致同一布局层次的其他控件发生位移状况,这就是我们常常碰到的情况,也是非常头痛。

那么,如果将EditText放在一个独立层次的控件中,并且让其上部(因为往往EditText都会放在底部)有一个自动控制其大小宽高的控件,是不是就会解决这个问题呢?

答案是肯定的!

将EditText放入独立的层次布局中,并辅以可自动收缩的控件。

类似于这样:

 <RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <EditText
        android:id="@+id/send_edt"
        android:layout_width="match_parent"
        android:layout_height="55dp"
        android:layout_alignParentBottom="true"
        android:gravity="center_vertical|left"
        android:imeOptions="actionSend|flagNoExtractUi"
        android:lines="1"
        android:minHeight="38dp"
        android:padding="5dp"
        android:textColor="#222222"
        android:textColorHint="#b4b4b4"
        android:textSize="13sp"
        android:visibility="visible" />
    <!--也可以是RecyclerView或ListView,但是不能是LinearLayout或RelativeLayout等布局-->
    <ScrollView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_above="@id/send_edt" />
</RelativeLayout>
 
 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

你可以直接将这段代码放入到你的Demo中,就会惊人的发现EditText会如你所愿的弹出。

但是问题真正结束了么?当然没有。

在全屏化的体验中,我们的背景往往是一个VideoViewSurfaceView等类似的播放控件。

如果仅仅按照我们如上所示的做,你会发现VideoViewSurfaceView这样的控件,在播放时播放内容会被自动缩小,这也是我们不可接受的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值