android 处理软键盘弹出时的一种方法
来源:互联网 发布:windows安全模式进不了 编辑:程序博客网 时间:2024/06/01 09:27
首先说明 我的思路
在查看了很多资料之后 发现了一些有用的 一些对我没用的
之后我的思路是这样的 :
先展示我的
效果是 上部的内容不变 下面的ScrollView 整体上移动
思路:如果检测到软键盘弹出 就让scrollView高度缩小
额 思路看起来好简单
实现起来也是~~
我的软键盘模式
<activity android:name=".shouye.Shouye_Bianji" android:windowSoftInputMode="adjustResize"/>
all.为页面的整体布局的linearlayout
main 是页面滚动的ScrollView
我的大致布局
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#333333" android:focusable="true" android:focusableInTouchMode="true" android:clipToPadding="true" android:id="@+id/all" android:fitsSystemWindows="true"> <LinearLayout android:id="@+id/top" android:layout_width="fill_parent" android:layout_height="43dp"> </LinearLayout> <ScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/main" android:background="#f2f2f2"> </ScrollView> <requestFocus/></LinearLayout>
得到main 在键盘没有的时候的高度
main = (ScrollView) findViewById(R.id.main); main.post(new Runnable() { @Override public void run() { main_height = main.getHeight(); } });
这是得到 all 的高度
all = (LinearLayout) findViewById(R.id.all); all.post(new Runnable() { @Override public void run() { all_height = all.getBottom(); System.out.println("高度时--》" + all_height ); } });
设置main 的高度
all.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { Rect rect = new Rect(); all.getWindowVisibleDisplayFrame(rect); int mainInvisibleHeight = all_height - rect.bottom;//这是得到状态栏高度的一种方法 int result = 0; int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); if (resourceId > 0) { result = getResources().getDimensionPixelSize(resourceId); } if (mainInvisibleHeight > 100) { ViewGroup.LayoutParams layoutParams = main.getLayoutParams(); layoutParams.height = mainInvisibleHeight - top_height + result * 2; System.out.println(result + " " + top_height + " " + all_height + " " + rect.bottom); main.setLayoutParams(layoutParams); } else { ViewGroup.LayoutParams layoutParams = main.getLayoutParams(); layoutParams.height = main_height; main.setLayoutParams(layoutParams); } } });
如果你看到了下面,感谢,不过因为我一直认为思路比较重要,所以我一般不会写demo,而且这段时间比较乱,如果有时间,我一定坐下来写出直接可以调用的小框架,思路就是这样,当然,如果我忘了,也就忘了……
0 0
- android 处理软键盘弹出时的一种方法
- 解决android软键盘弹出有时会遮住EditText输入框的一种方法
- android 弹出软键盘的方法
- Android 软键盘弹出处理
- Android虚拟软键盘弹出时的界面控制方法
- android软键盘弹出,会把原来的界面挤上去的问题 处理方法
- android软键盘弹出,会把原来的界面挤上去的问题 处理方法
- 避免 EditText 弹出软键盘的处理方法
- Android 处理软键盘弹出问题
- Android的EditText不弹出软键盘的方法
- Android软键盘的弹出 隐藏部分界面的方法
- Android Dialog弹出时的软键盘弹出问题
- Android软键盘弹出不影响布局的方法
- 设置android软键盘,默认不弹出的方法
- Android软键盘弹出不影响布局的方法
- Android软键盘弹出不影响布局的方法
- Android 中不弹出软键盘的方法
- 监听android软键盘弹出或者关闭的方法
- 用java搭建自己的http服务器
- Repeated Substring Pattern问题及解法
- 优云亮相GOPS2017全球运维大会 “黑科技”获全场最高关注
- Docx4j替换word文档的页眉
- 机器学习模型LaTeX公式版:支持向量机
- android 处理软键盘弹出时的一种方法
- 位运算的奇淫技巧
- 原生js+cookie实现购物车功能
- Flink Java与Scala的Api类型不匹配问题
- 挑战 poj 3041 二分图最大匹配算法 (匈牙利算法)
- oj383. Ransom Note
- 关于EasyUI中阻止事件冒泡
- nginx配置location总结及rewrite规则写法
- arcgis aip for js 4.X 出现跨域问题