【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属性

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值