IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 【Android开发】TextInputLayout -> 正文阅读

[移动开发]【Android开发】TextInputLayout

TextInputLayout

Android 开发中,不可避免的会出现使用各种输入框的场景,通常的,我们都会去考虑使用或继承 Android 原生的一个控件叫做 EditText

EditText的使用

我们模拟一个输入手机号的输入框

    <EditText
      android:id="@+id/et_phone"
        android:layout_width="300dp"
        android:layout_height="100dp"
        android:hint="请输入电话号码"
        android:inputType="number"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

使用 EditText 控件,并且设置 hint 属性必要的输入提示,同时限制了 inputType 来限制输入类型为纯数字。要获取到输入的内容也很简单。

    val etPhone: EditText = findViewById(R.id.et_phone)
    println(etPhone.text.toString())

这就是 EditText 的一个简单的使用情况。现在我们加入了 TextInputLayout 看看会有什么区别。

TextInputLayout的使用

    <com.google.android.material.textfield.TextInputLayout
        android:id="@+id/tl_phone"
        android:layout_width="300dp"
        android:layout_height="100dp"
        android:gravity="center"
        app:counterOverflowTextColor="@color/red"
        app:passwordToggleEnabled="true"
        app:counterEnabled="true"
        app:counterMaxLength="11"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <com.google.android.material.textfield.TextInputEditText
            android:id="@+id/et_phone"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入电话号"
            android:inputType="textPassword" />
    </com.google.android.material.textfield.TextInputLayout>

首先,比起一个控件,TextInputLayout 更像是一个容器。它是继承自 LinearLayout,并且它和 scrollView 一样,只能允许有一个子控件,并且这个控件必须是一个 EditText

注意:这边使用的是 TextInputEditText,它是继承了 AppCompatEditText,而 AppCompatEditText 又是继承了 EditText。

其中有几个 TextInputLayout 特有的属性:

  • counterEnabled:记录输入多少字符
  • counterMaxLength:最多允许输入多少字符
  • passwordToggleEnabled:密码可见与不可见切换
  • counterOverflowTextColor:输入超出最大值显示的颜色

详细属性配置列参见 https://developer.android.com/reference/com/google/android/material/textfield/TextInputLayout

它有一个非常好玩的效果就是当你把获得输入框的焦点之后,hint 会自动上浮到左上角。中间还有非常丝滑连贯的动画效果。

同时可以非常简单的做到密码可见的功能。同时除了可以更加友好的展示提示之外,TextInputLayout 还可以非常友好的展示错误信息。例如我们输入的是手机号,我们需要对手机号的位数进行判定,即一定要输入11位的手机号。

    val phone = etPhone.text
    if (phone!!.toString().length != 11) {
        tlPhone.isErrorEnabled = true
        tlPhone.error = "请输入11位电话号码!!"
    } else {
        Toast.makeText(
            this,
            "Your phone number is $phone",
            Toast.LENGTH_SHORT
        ).show()
    }

我们通过设置 isErrorEnabledtrue 来声明存在错误信息。并且配置 error 属性来展示错误信息警告。


《Android进阶之光》刘望舒 电子工业出版社

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-09-27 14:12:28  更:2021-09-27 14:14:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:47:19-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码