android输入法隐藏状态栏,android 输入法设置显示隐藏

Android是一个针对触摸屏专门设计的操作系统,当点击编辑框,系统自动为用户弹出软键盘,以便用户进行输入。

那么,弹出软键盘后必然会造成原有布局高度的减少,那么系统应该如何来处理布局的减少?我们能否在应用程序中进行自定义的控制?这些是本文要讨论的重点。

一、软键盘显示的原理

软件盘的本质是什么?软键盘其实是一个Dialog!

InputMethodService为我们的输入法创建了一个Dialog,并且将该Dialog的Window的某些参数(如Gravity)进行了设置,使之能够在底部或者全屏显示。当我们点击输入框时,系统对活动主窗口进行调整,从而为输入法腾出相应的空间,然后将该Dialog显示在底部,或者全屏显示。

二、活动主窗口调整

android定义了一个属性,名字为windowSoftInputMode, 用它可以让程序可以控制活动主窗口调整的方式。我们可以在AndroidManifet.xml中对Activity进行设置。如:android:windowSoftInputMode="stateUnchanged|adjustPan"

该属性可选的值有两部分,一部分为软键盘的状态控制,另一部分是活动主窗口的调整。前一部分本文不做讨论,请读者自行查阅android文档。

模式一,压缩模式

windowSoftInputMode的值如果设置为adjustResize,那么该Activity主窗口总是被调整大小以便留出软键盘的空间。

我们通过一段代码来测试一下,当我们设置了该属性后,弹出输入法时,系统做了什么。

重写Layout布局:

1.publicclassResizeLayoutextendsLinearLayout{

2.privatestaticintcount =0;

3.

4.publicResizeLayout(Context context, AttributeSet attrs) {

5.super(context, attrs);

6.     }

7.

8.@Override

9.protectedvoidonSizeChanged(intw,inth,intoldw,intoldh) {

10.super.onSizeChanged(w, h, oldw, oldh);

11.

12.         Log.e("onSizeChanged "+ count++,"=>onResize called! w="+w +",h="+h+",oldw="+oldw+",oldh="+oldh);

13.     }

14.

15.@Override

16.protectedvoidonLayout(booleanchanged,intl,intt,intr,intb) {

17.super.onLayout(changed, l, t, r, b);

18.         Log.e("onLayout "+ count++,"=>OnLayout called! l="+ l +", t="+ t +",r="+ r +",b="+b);

19.     }

20.

21.@Override

22.protectedvoidonMeasure(intwidthMeasureSpec,intheightMeasureSpec) {

23.super.onMeasure(widthMeasureSpec, heightMeasureSpec);

24.

25.         Log.e("onMeasure "+ count++,"=>onMeasure called! widthMeasureSpec="+ widthMeasureSpec +", heightMeasureSpec="+ heightMeasureSpec);

26.     }1. public class ResizeLayout extends LinearLayout{

2. private static int count = 0;

3.

4. public ResizeLayout(Context context, AttributeSet attrs) {

5. super(context, attrs);

6. }

7.

8. @Override

9. protected void onSizeChanged(int w, int h, int oldw, int oldh) {

10. super.onSizeChanged(w, h, oldw, oldh);

11.

12. Log.e("onSizeChanged " + count++, "=>onResize called! w="

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值