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


【建议收藏】17个XML布局小技巧

MaterialDesign

这里推荐一个郭霖的一个有沉浸式的文章:

再学一遍android:fitsSystemWindows属性

以上是关于Android 开发常用控件的小技巧的主要内容,如果未能解决你的问题,请参考以下文章

Android 开发常用控件的小技巧

Android——隐藏输入法的小技巧

Android Studio和 adb 的一些常用技巧

Android开发中的小技巧

这些 Drawable 的小技巧,你都了解吗?

JS开发中常用的小技巧