android activity 叠加 软键盘,软键盘相关

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

Android软键盘相关处理

项目中有类似陌陌输入框的UI,因为Edittext不在输入框底部,导致软键盘弹出时显示在Edittext底部而遮挡掉输入框部分UI,目前采用的方法是对Viewtree进行监听,软键盘弹起来时,进行scrollTo移动输入框1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25private void (View root, View scrollToView){

root.getViewTreeObserver().addOnGlobalLayoutListener(() -> {

Rect rect = new Rect();

root.getWindowVisibleDisplayFrame(rect);

//根布局高度 - 可见区域高度 = 软键盘高度

int keyboardHeight = root.getRootView().getHeight() - rect.bottom;

if (keyboardHeight > 100) {

//如果像素数大于100极大可能是软键盘弹出

mIsKeyboardOpened = true;

//处理Edittext不在输入框底部的情况

int[] location = new int[2];

scrollToView.getLocationInWindow(location);

//输入框在界面上Y轴坐标 + 输入框高度 - 可见区域底部

root.scrollTo(0, location[1] + scrollToView.getHeight() - rect.bottom);

} else {

//软键盘收起

root.scrollTo(0, 0);

if (mIsKeyboardOpened) {

mIsKeyboardOpened = false;

DanmakuInputDialog.this.dismiss();

}

}

});

}

##android:windowSoftInputMode属性

输入框以DialogFragment的方式进行视图叠加实现,没有用到windowSoftInputMode属性,不过这里也总结一下1

activity主窗口与软键盘的交互模式,可以用来避免输入法面板遮挡问题,Android1.5后的一个新特性。

这个属性能影响两件事情:当有焦点产生时,软键盘是隐藏还是显示

是否减少活动主窗口大小以便腾出空间放软键盘

各值如下:stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置

stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示

stateHidden:用户选择activity时,软键盘总是被隐藏

stateAlwaysHidden:当该Activity主窗口获取焦点时,软键盘也总是被隐藏的

stateVisible:软键盘通常是可见的

stateAlwaysVisible:用户选择activity时,软键盘总是显示的状态

adjustUnspecified:默认设置,通常由系统自行决定是隐藏还是显示

adjustResize:该Activity总是调整屏幕的大小以便留出软键盘的空间

adjustPan:当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分

##android:imeOptinos属性

Android在横屏时唤起软键盘会默认全屏展示,当使用imeOptions时可以解决问题。1

android:imeOptions=”flagNoExtractUi” //使软键盘不全屏显示,只占用一部分屏幕 同时,这个属性还能控件软键盘右下角按键的显示内容,默认情况下为回车键

android:imeOptions=”actionNone” //输入框右侧不带任何提示

android:imeOptions=”actionGo” //右下角按键内容为’开始’

android:imeOptions=”actionSearch” //右下角按键为放大镜图片,搜索

android:imeOptions=”actionSend” //右下角按键内容为’发送’

android:imeOptions=”actionNext” //右下角按键内容为’下一步’

android:imeOptions=”actionDone” //右下角按键内容为’完成’

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值