软键盘无法把内容顶出屏幕外

转载请标明出处,维权必究:http://77blogs.com/?p=275

 

继上次这一篇后:https://www.cnblogs.com/tangZH/p/12013685.html

我继续探讨,这次的场景和上一次的场景是一样的,在一个布局中,根布局是相对布局,需要被软键盘顶上去的部分为线性布局。线性布局最下方为一个Editext,后来发现,当线性布局的内容过多的时候,线性布局没法被顶出屏幕外,到达顶端就停止了,导致下方的EdiText被软键盘遮挡住。

 

我在根布局最外层套上一个ScrollView,这样一来发现下方的Editext还是会被遮挡住,但是不同的是,这时候你可以去手动将整个布局往上滑动,可我们需要的是顶上去之后自动露出来全部,而不是靠用户手动去滑,于是乎我想到了下面这种方法:

监听view布局发现变化(也就是软键盘出现或者消失的时候)的时候就将scrollView滑动到最底下,这样就能够使得需要显示的内容不被软键盘遮挡。

android只设置部分控件随着软键盘的出现而腾出空间

转载请标明出处:http://77blogs.com/?p=276

 

在项目过程中,出现了一个需求,软键盘要顶起部分控件,而另一部分控件不动。

关于这种需求,我们需要明确布局方式:

1、线性布局是行不通的,即使被顶上去也是全部被顶上去,因为线性布局中里面的控件都是线性排列的,那么我们就用相对布局这种方式。

2、相对布局这种方式中,需要被顶上去的那一部分需要用一个父布局包裹起来,并且与不需要顶起来的那一部分不能有依赖关系,比如layout_above这类的,否则一个位置改变,另一个也会跟着改变。

项目中需要被顶起来的那一部分使用了:android:layout_alignParentBottom=”true”,置于底部。

 

其余的:

布局这样子之后,还要在manifests文件里面配置android:windowSoftInputMode=”adjustResize”

 

然而会发现还是没有被顶起来,其实还差一个,在需要被顶起来的那一个父布局里面加上android:fitsSystemWindows=”true”

 

这样又出现了另一个问题:当我们使用沉浸式状态栏的时候,设置android:fitsSystemWindows=”true”会导致该父布局上面多出一块空白,据说这块空白的高度就是状态栏的高度。

 

最后发现可以用下面的方法解决:

需要被顶起来的一个父布局采用自定义的布局,然后重写相应的方法:

这样便解决了。

参考:https://blog.csdn.net/dbmonkey/article/details/84966318

 

EditText超出字数限制,给用户提示

当我们在Editext输入内容的时候,检测如果超过限制的长度无法输入内容,并且给用户提示。

首先我想到了下面的方法:


 

未经测试,个人觉得这种体验或许不是很好,或许会出现EdiText闪动。

 

其实我们可以用下面这种方法:

源码给Editext设置了过滤器,专门用来判断是否超出最大的字符长度,把这段过滤器取出来,在里面加上Toast提示,设置给Editext就可以了。


 

调用:


 

源码中该方法是这样的:


 

由此可见我们可以给Editext设置多个过滤器,例如过滤掉一些特殊字符,表情等等。

 

学习android有一个很重要的能力就是阅读源码的能力,很多问题都可以通过阅读源码找到解决方法。

转载请标明:http://77blogs.com/?p=554

参考链接:https://blog.csdn.net/qq_26411333/article/details/51647888

设置Editext的光标宽高与颜色

转载请标明 :http://77blogs.com/?p=555

在Editext的布局属性上加上

android:textCursorDrawable=”@drawable/cursor_shape”

cursor_shape如下:

 

事实证明:设置android:height无效,应该用padding的方法。

top设置为-2dp :让光标顶部下移2dp

bottom设置为-2dp:让光标底部上移2dp

这样子光标的高度就变小了4dp

 

从下面的源码可以大概看出原因: