欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android 中 Edittext 样式、焦点、光标等问题整理

程序员文章站 2022-03-12 09:12:51
进入页面后自动弹出软键盘需要一下操作AndroidManifest.xml中对应的 Activity 中添加android:windowSoftInputMode="stateVisible|adjustResize"EditText 不用怎么设置进入页面后调用此方法获取焦点即可 private fun showSoftInputFromWindow(editText: EditText) { editText.isFocusable = true...

进入页面后自动弹出软键盘需要一下操作

AndroidManifest.xml中对应的 Activity 中添加

android:windowSoftInputMode="stateVisible|adjustResize"

EditText 不用怎么设置

进入页面后调用此方法获取焦点即可

    private fun showSoftInputFromWindow(editText: EditText) {
        editText.isFocusable = true
        editText.isFocusableInTouchMode = true
        editText.isCursorVisible = true
        editText.requestFocus()
        val inputMethodManager =
            activity?.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
        inputMethodManager.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT)
    }

对应的隐藏软键盘方法

    private fun hideSoftInputFromWindow() {
        val inputMethodManager =
            activity?.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
        inputMethodManager.hideSoftInputFromWindow(activity?.window?.decorView?.windowToken, 0)
    }

其他的相关属性,可清楚焦点与光标

        edittext.isFocusable = false
        edittext.isFocusableInTouchMode = false
        edittext.clearFocus()
        edittext.isCursorVisible = false

 

Edittext 的样式属性设置相关问题

光标颜色的定义

首先定义shape

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <size android:width="1dp" />
    <solid android:color="@color/colorBlack" />
</shape>

然后设置 android:textCursorDrawable ,我这里是统一到了 style 中

<item name="android:textCursorDrawable">@drawable/color_cursor</item>

 

定义键盘的 imeOptions ,这里以简单的 actionDone 为例,其他的属性类似。

设置属性

android:imeOptions="actionDone"

调用setOnEditorActionListener 即可获取监听

        etNickName.setOnEditorActionListener { _, actionId, _ ->
            if (actionId == EditorInfo.IME_ACTION_DONE) {
                //todo
                return@setOnEditorActionListener true
            }
            return@setOnEditorActionListener false
        }

actionUnspecified未指定,对应常量EditorInfo.IME_ACTION_UNSPECIFIED

actionNone 没有动作,对应常量EditorInfo.IME_ACTION_NONE

actionGo去往,对应常量EditorInfo.IME_ACTION_GO 

actionSearch 搜索,对应常量EditorInfo.IME_ACTION_SEARCH

actionSend 发送,对应常量EditorInfo.IME_ACTION_SEND

actionNext 下一个,对应常量EditorInfo.IME_ACTION_NEXT

actionDone 完成,对应常量EditorInfo.IME_ACTION_DONE

注意:如果设置了 键盘没有变化  那么需要单独加一些其他的属性 配合使用

xml中 属性设置:

将singleLine设置为true

将inputType设置为text 

 

输入字符 inputType 相关问题

android:inputType=”none”

android:inputType=”text”

android:inputType=”textCapCharacters” 字母大写

android:inputType=”textCapWords” 首字母大写

android:inputType=”textCapSentences” 仅第一个字母大写

android:inputType=”textAutoCorrect” 自动完成

android:inputType=”textAutoComplete” 自动完成

android:inputType=”textMultiLine” 多行输入

android:inputType=”textImeMultiLine” 输入法多行(如果支持)

android:inputType=”textNoSuggestions” 不提示

android:inputType=”textUri” 网址

android:inputType=”textEmailAddress” 电子邮件地址

android:inputType=”textEmailSubject” 邮件主题

android:inputType=”textShortMessage” 短讯

android:inputType=”textLongMessage” 长信息

android:inputType=”textPersonName” 人名

android:inputType=”textPostalAddress” 地址

android:inputType=”textPassword” 密码

android:inputType=”textVisiblePassword” 可见密码

android:inputType=”textWebEditText” 作为网页表单的文本

android:inputType=”textFilter” 文本筛选过滤

android:inputType=”textPhonetic” 拼音输入

//数值类型

android:inputType=”number” 数字

android:inputType=”numberSigned” 带符号数字格式

android:inputType=”numberDecimal” 带小数点的浮点格式

android:inputType=”phone” 拨号键盘

android:inputType=”datetime” 时间日期

android:inputType=”date” 日期键盘

android:inputType=”time” 时间键盘

 

本文地址:https://blog.csdn.net/MldXTieJiang/article/details/107121984