Android 开发常用控件的小技巧
Posted da_caoyuan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 开发常用控件的小技巧相关的知识,希望对你有一定的参考价值。
有段时间没有写过新文章了,今天就把近期学到的一些控件小技巧分享一下。
EditText 布局文件中设置inputType无效处理办法
开发中我们有时候会限制输入的内容,比如只能输入数字,但是布局文件中设置inputType有时候就是不起作用。此时我们可以在代码中这样设置:
只能输入数字或者小数:
binding.workingArea.inputType= InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL
只能输入整数,可输入正负号:
binding.workingArea.inputType= InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_SIGNED
只能输入整数,不可输入正负号:
binding.workingArea.inputType= InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_VARIATION_NORMAL
app:tint=“@color/color_34C266” 属性
<ImageView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:paddingHorizontal="@dimen/dp_8"
android:src="@mipmap/icon_scan"
app:tint="@color/color_34C266" />
ps:当我们在用 ImageView 显示本地资源图标时,有时会发现本地已经有图标了,但就是没有自己想要的图标颜色,通常我们会找ui再切一个自己想要的颜色图标。这样做就会导致同样的图标,res下会有多个,区别也就是颜色不一样。有了 app:tint 属性,我们就不必如此了,此属性可直接设置图标的颜色。
android:drawableTint=“@color/white”
<TextView
style="@style/textStyle14333333"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_20"
android:drawableStart="@mipmap/icon_red_star"
android:drawablePadding="@dimen/dp_5"
android:drawableTint="@color/white"
android:text="作业" />
ps:有时候我们给 TextView左侧或右侧设置图标,同理没有自己想要的图标颜色时,也可以这样android:drawableTint 设置图标颜色。
LinearLayoutCompat
<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:divider="@drawable/line"
app:showDividers="end"
android:orientation="vertical">
......
</androidx.appcompat.widget.LinearLayoutCompat>
line.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#EFEFEF"/>
<size android:height="@dimen/dp_1"/>
</shape>
ps:当我们在布局文件中,设置分割线的时候,我们通常会用 View 组件,然后设置一个背景色。而用 app:divider 会变得非常简单。
invoke的用法
在 selectAdapter 中定义回调:
var clickItem: ((position: Int) -> Unit)? = null
holder.binding.root.setOnClickListener
clickItem?.invoke(position)
使用时:
selectAdapter?.clickItem = position->
软键盘弹出遮挡布局的处理方法:
1:软键盘弹出时,获取焦点的输入框会被顶起,整个界面往上移动,这种设置(推荐)
清单文件中的activity添加如下属性:
android:windowSoftInputMode="adjustPan"
或者
activity.getWindow().setSoftInputMode(WindowManager.LayoutParams. SOFT_INPUT_ADJUST_PAN);
2.软键盘弹出时,获取焦点的输入框被顶起,整个界面系统自动重新布局(挤压),这种设置
activity.getWindow().setSoftInputMode(WindowManager.LayoutParams. SOFT_INPUT_ADJUST_RESIZE);
3.软键盘弹出时,整个界面不会变动,输入框也不会顶起,这种设置
activity.getWindow().setSoftInputMode(WindowManager.LayoutParams. SOFT_INPUT_ADJUST_NOTHING);
如果你的需求是不仅输入框要显示出来,按钮也要显示出来(比如登录,注册这些)
推荐的开源控件:
https://github.com/yoyoyaobin/PreventKeyboardBlockUtil
这里推荐一个郭霖的一个有沉浸式的文章:
再学一遍android:fitsSystemWindows属性
以上是关于Android 开发常用控件的小技巧的主要内容,如果未能解决你的问题,请参考以下文章