㈠ android 键盘将布局顶上去
效果图:
布局文件:
添加 android:fitsSystemWindows="true"
注册清单:
整个布局都顶上去
AndroidManifest.xml 添加 android:windowSoftInputMode="adjustResize|stateHidden"
只把输入框顶上去
AndroidManifest.xml 添加 android:windowSoftInputMode="stateHidden|adjustPan"
㈡ Android 点击输入框弹出键盘,布局随键盘往上移动
一、效果图:
二、Code:
/**
* 1、获取main在窗体的可视区域
* 2、获取main在窗体的不可视区域高度
* 3、判断不可视区域高度,之前根据经验值,在有些手机上有点不大准,现改成屏幕整体高度的1/3
* 1、大于屏幕整体高度的1/3:键盘显示 获取Scroll的窗体坐标
* 算出main需要滚动的高度,使scroll显示。
* 2、小于屏幕整体高度的1/3:键盘隐藏
*
* @param main 根布局
* @param scroll 需要显示的最下方View
*/
public static void addLayoutListener(final View main, final View scroll) {
main.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Rect rect = new Rect();
main.getWindowVisibleDisplayFrame(rect);
int screenHeight = main.getRootView().getHeight();
int mainInvisibleHeight = main.getRootView().getHeight() - rect.bottom;
if (mainInvisibleHeight > screenHeight / 4) {
int[] location = new int[2];
scroll.getLocationInWindow(location);
int srollHeight = (location[1] + scroll.getHeight()) - rect.bottom;
main.scrollTo(0, srollHeight);
} else {
main.scrollTo(0, 0);
}
}
});
}
三、调用方式:
在Activity的onCreate()中调用,
仅此记录。
㈢ android布局问题我想实现图上的效果,是一个按钮+一个输入框求大神指导
这个问题很简单!1.最外面使用一个linearLayout背景设置为那个橘黄色的图片。
2.你那个按钮也可以采用背景图片(imgeButton、或者textView什么都可以)
3.输入框采用EditText
㈣ 安卓布局 一个输入框我想向让他右移一点距离不贴着边加 用的是linerlayout 怎么弄
EditText布局属性中设置:android:layout_marginLeft="20dp"
㈤ Android 输入法对话框的布局
显然不行 除非你自己写 输入法是一个应用 布局是他们自己写的 只能是按照手机方向来显示 查看原帖>>
㈥ Android WebView加载页面的输入框被软键盘遮挡的问题
当实现沉浸式状态栏时遇到软件盘遮挡WebView页面的输入框的问题,这是实现方式有问题,应该检查你的实现方式。
1)加载WebView的Activty不能设置为全屏模式,即Theme.NoTitleBar.Fullscreen,可以使用Theme.Holo.Light.NoActionBar
2)沉浸式状态栏的实现方式,在Activity的根布局里加两个属性:
android:clipToPadding="true" 设置你的绘制区域在padding里面
android:fitsSystemWindows="true" 调整view的padding属性为系统窗口 留出空间
在Activity的onCreate方法里面设置标题栏为透明,即:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_ST ATUS);
3)Activity里面不能设置android:windowSoftInputMode的属性,使用默认的属性即可
以上3步即可实现沉浸式状态栏并且能保证你的WebView加载的HTML页面的输入框不被软键盘遮挡。
顶
0
踩
0
上一篇 Android Studio在SVN上创建分支
下一篇 Android Converty问题解决方案
相关文章推荐
• android中webview加载html输入框不能输入内容问题记录
• 如何解决Android软键盘盖住输入框的问题
• Android 软键盘盖住输入框的问题
• Android 软键盘盖住输入框的问题
• Android 软键盘盖住输入框的问题
• Android 软键盘盖住输入框的问题
• Android 软键盘盖住输入框的问题
• android popupwindow 中输入框被软键盘弹出挡住问题解决
• ios解决软键盘遮挡输入框问题
• Android软键盘遮挡输入框解决方法
参考知识库
Android知识库
34080 关注 | 2937 收录
猜你在找
Android中的五大布局
零基础学软件之HTML语言
【Android APP开发】Android高级商业布局快速实现
html5的app开发
Android前沿技术—《软件框架搭建》
Android移植基础
html系统学习篇
零基础学习HTML5—html+css基础
Android开发之初窥门径
Android之数据存储
关闭
㈦ Android dialog 遮住输入框的解决思路
在工作中经常会遇到弹出的dialog有输入框的情况,屏幕大了还好,屏幕小了之后就特别容易出现输入框被软键盘遮住的情况,下面就是我在实际想中中遇到的
从上图可以看出输入框已经看不到了,遇到这种情况的第一个思路都是在dialog的style中添加
<item name="android:windowSoftInputMode">adjustPan</item>,我也试了下基本上没用。然后换了个思路,既然软键盘弹出来了,为什么不能让dialog向上移动同样的距离呢。思路有了,下面就是把他实现了。
首先就是要计算软键盘的高度,由于google并没有给出具体的方法来计算软键盘的高度,这时候我们就只能根据布局的高度变化来计算了。首先需要计算出屏幕的bottom坐标,然后监控布局的变动判断变动后的bottom和初始的bottom的差值,一般肉眼观察软键盘的高度差不多是屏幕高度的1/3,所以就假设bottom往上移动了屏幕的1/3的距离就认为软件盘弹出来了,当然也可以根据其他值来判断,下面贴出具体方法:
/**
* activity中判断软键盘是否显示
* @param activity
* */
fun isKeyboardShowing(activity: Activity): Boolean {
val screenHeight = activity.window!!.decorView.height.toDouble()
//获取view的可见区域
val rect = Rect()
activity.window!!.decorView.getWindowVisibleDisplayFrame(rect)
return (2.0 /3.0) * screenHeight > rect.bottom.toDouble()
}
接下来我们来计算出软件盘的高度,经过我在多个测试机上实验发现初始时bottom就是屏幕的高度,下面是计算键盘高度的具体方法
/**
* activity中计算软键盘的高度
* @param activity
* */
fun getKeyboardHeight(activity: Activity): Int {
val displayMetrics = DisplayMetrics()
activity.windowManager.defaultDisplay.getMetrics(displayMetrics)
val screenHeight = displayMetrics.heightPixels
val rect = Rect()
activity.window!!.decorView.getWindowVisibleDisplayFrame(rect)
return screenHeight - rect.bottom
}
有了高度之后一切就好办了我们只需要在软键盘弹出来的时候把dialog往上移动就行,在移动方式上我选择了设置LayoutParams的方式,开始时想设置底部margin的,结果发现没作用,dialog一点不移动,最后只好设置上边的margin为负值
if (SoftUtils.isKeyboardShowing(context)) {
val lp =mRootView.layoutParams as ViewGroup.MarginLayoutParams
if (lp.topMargin ==0) {
lp.topMargin = -SoftUtils.getKeyboardHeight(context)
if (mRootView.height
lp.height =mRootOriginHeight
}
mRootView.layoutParams = lp
}
}else {
if (mRootOriginHeight ==0) {
mRootOriginHeight =mRootView.height
}
val lp =mRootView.layoutParams as ViewGroup.MarginLayoutParams
if (lp.topMargin <0) {
lp.topMargin =0
mRootView.layoutParams = lp
}
}
其中mRootView是dialog最外层的布局。在这里面比较重要的一点监测方式,在哪里监测软键盘的弹出动作,在activity中可以监测onWindowFocusChanged方法,但是如果封装了dialog的话,dialog中的onWindowFocusChanged并不会起作用,在这里我选择了使用ViewTreeObserver和监听,通过给mRootView的ViewTreeObserver添加addOnGlobalLayoutListener来实时判断,下面是完整的方法
private fun setSpace() {
val treeObserver =mRootView.viewTreeObserver
treeObserver.addOnGlobalLayoutListener{
if (SoftUtils.isKeyboardShowing(context)) {
val lp =mRootView.layoutParams as ViewGroup.MarginLayoutParams
if (lp.topMargin ==0) {
lp.topMargin = -SoftUtils.getKeyboardHeight(context)
if (mRootView.height
lp.height =mRootOriginHeight
}
mRootView.layoutParams = lp
}
}else {
if (mRootOriginHeight ==0) {
mRootOriginHeight =mRootView.height
}
val lp =mRootView.layoutParams as ViewGroup.MarginLayoutParams
if (lp.topMargin <0) {
lp.topMargin =0
mRootView.layoutParams = lp
}
}
}
}
在这里当软键盘弹出的时候重新设置了下dialog的高度,因为有时候软键盘的弹出会使dialog的高度压缩,所以弹出的时候重新设置下就好了。
这就是我的一个解决思路,当然完全按这个写的话当输入框较多时也可能出问题,最上层的输入框跑屏幕之外去了,这种情况下我们只需要根据输入框的位置动态的计算dialog需要往上移动的距离就行,不要一直设置为计算出来的软键盘的高度。
下图是解决之后的UI
㈧ 安卓给输入框设置默认值
通过WebView显示一个网页,并给输入框设置默认值。
在有EditText的布局中,可以对固定文本设置默认聚焦,这样实现默认情况下输入框不聚焦,此外,若要实现点击输入框外部关闭软键盘并且让输入框失去焦点,则可重写dispatchTouchEvent方法,捕捉到输入框获取到焦点后再进行相应操作。
安卓系统默认参数的修改通常在新项目开始之初,咱们须要针对客户需求进行各类系统默认属性的配置,一般这些属性都是经过build.prop、settings.db、default.xml、一些功能package下的config.xml等来进行初始化配置的。
㈨ android 系统输入法如何可以使上面带有朋友圈一样的输入框
这个简单,你在界面用ScrollView布局,
里面用一个RelativeLayout铺满父窗口,RelativeLayout用布局,居下,这样,当获取焦点的时候,就会自动上去了,
还需要在manifest文件中,对activity设置android:windowSoftInputMode="stateHidden|adjustResize"