最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Android 浮动编辑框的具体实现代码
时间:2022-06-25 23:18:18 编辑:袖梨 来源:一聚教程网
Android app 开发中经常会遇到一些输入框要悬浮到软键盘上方的需求,大致做法有做法如下。
Android输入法软键盘悬浮,最常见的一种方法是通过给ViewTreeObserver添加ViewTreeObserver.OnGlobalLayoutListener当全局布局完成时或视图树中视图的可见性发生变化时回调onGlobalLayout方法,在onGlobalLayout方法中获取当前窗口的区域,获取区域高度如果超过屏幕的五分之一一般认为是软键盘处于显示状态,区域高度即为输入法软键盘高度,通过此高度动态调整view的高度,达到输入框悬浮于软键盘上方的效果,代码如下:
ViewTreeObserver.OnGlobalLayoutListener layoutListener =
new ViewTreeObserver.OnGlobalLayoutListener() {
int mScreen;
int mKeyboard;
@Override
public void onGlobalLayout() {
Rect rect = new Rect();
// 测量当前窗口的显示区域
((Activity)getContext()).getWindow().getDecorView()
.getWindowVisibleDisplayFrame(rect);
if(mScreenHeight mScreenHeight / 5) {
mKeyboardHeight = keyboardHeight;
}
}
}
还有一种方式是给Activity设置 Android:windowSoftInputMode="stateVisible|adjustResize",但是这种方法不是很灵活,一般解决不了产品的需求。
本文重点介绍通过透明的Activity来实现效果。
先来张效果图
效果图
1.自定义一个activity theme
2.在AndroidManifest.xml中设置
3.在Activity中调整window的重力方向
public class FloatEditorActivity extends Activity implements View.OnClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.id.editorlayout);
getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
getWindow().setGravity(Gravity.BOTTOM);
}
}
相关文章
- 魔兽世界怀旧服Plus达纳苏斯哨兵塞尔高姆位置一览 12-08
- 致命公司怎么复活人类 可以复活吗 12-08
- 绝区零绳匠什么意思 绳匠含义分享 12-08
- 星球重启抽象三部曲获取攻略 抽象三部曲在哪 12-08
- 清零计划2比利的哲学成就达成攻略 12-08
- 星球重启篝火派对开启方法 篝火派对怎么开 12-08
