栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android 浮动编辑框的具体实现代码

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android 浮动编辑框的具体实现代码

Android app 开发中经常会遇到一些输入框要悬浮到软键盘上方的需求,大致做法有做法如下。

Android输入法软键盘悬浮,最常见的一种方法是通过给ViewTreeObserver添加ViewTreeObserver.OnGlobalLayoutListener当全局布局完成时或视图树中视图的可见性发生变化时回调onGlobalLayout方法,在onGlobalLayout方法中获取当前窗口的区域,获取区域高度如果超过屏幕的五分之一一般认为是软键盘处于显示状态,区域高度即为输入法软键盘高度,通过此高度动态调整view的高度,达到输入框悬浮于软键盘上方的效果,代码如下:

ViewTreeObserver.onGlobalLayoutListener layoutListener =
 new ViewTreeObserver.onGlobalLayoutListener() {
      int mScreenHeight = 0;
      int mKeyboardHeight = 0;
      @Override
      public void onGlobalLayout() {
 Rect rect = new Rect();
 // 测量当前窗口的显示区域
 ((Activity)getContext()).getWindow().getDecorView()
     .getWindowVisibleDisplayframe(rect);
 if(mScreenHeight <= 0){
   mScreenHeight = ((WindowManager) getContext()
.getSystemService(Context.WINDOW_SERVICE))
.getDefaultDisplay().getHeight();
 }
 //计算出软键盘的高度
 int keyboardHeight = mScreenHeight - rect.bottom;

 //如果keyboardHeight大于屏幕的五分之一,
 // 此时keyboardHeight有效,反之就是软键盘已经关闭了。
 if (Math.abs(keyboardHeight) > mScreenHeight / 5) {
   mKeyboardHeight = keyboardHeight;
 }
      }
    }

还有一种方式是给Activity设置 Android:windowSoftInputMode="stateVisible|adjustResize",但是这种方法不是很灵活,一般解决不了产品的需求。



本文重点介绍通过透明的Activity来实现效果。

先来张效果图

效果图

全部源码已上传到github 点击查看,别忘了star哦

1.自定义一个activity theme


    @android:color/transparent
    true
    false
  

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);
  }
}

就这样非常简单的实现了浮动编辑框的效果,全部源码已上传到github并做了很好的的封装,只需实现你的需求布局即可,里面也有完整的用法实例。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/157602.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号