最新下载
热门教程
- 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);
}
}
相关文章
- 神话时代重述版亚族枪骑兵使用指南 11-08
- 二重螺旋丽蓓卡武器怎么配-丽蓓卡武器选择推荐 11-08
- 神话时代重述版希腊步兵异教成就攻略 11-08
- 神话时代重述版矿场位置选择推荐 11-08
- 神话时代重述版视角镜头锁定解除方法 11-08
- 神话时代重述版信仰值作用介绍说明 11-08
