1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Android入门之路 - TextView EditText属性大全

Android入门之路 - TextView EditText属性大全

时间:2022-12-14 13:46:07

相关推荐

Android入门之路 - TextView EditText属性大全

此篇内容主要来源于我自己在开发中遇到的常见问题,特此总结一番方便自己查阅与帮助他人 > <

EditText相关Blog

TextView、EditText属性大全监听EditText的文本变化设置EditText光标颜色与下划线颜色EditText禁止输入表情符号EditText一键清除内容

主要包含了EditTextTextView基础属性,以及常见的单行显示、多行显示 、字间距、行间距、文末省略号设置、键盘显示与隐藏、以及调试阶段用到了不可输入表情等功能~

共性属性视图开发(预览)基础属性居中属性 实战属性单行、多行显示末尾为...单行显示,末尾为...固定多行行数,末尾为...限制字数,末尾为... 字距、行距字距行距 TextView专用属性字体样式(标准、加粗)同串多效果(富文本) EditText专用属性EditText 自动弹出键盘与隐藏键盘显示软键盘隐藏软键盘 InputType类型限制xml 内设置代码动态设置代码中使用

共性属性

视图开发(预览)

只在XML中显示,运行在手机上不进行显示

Tip:关于这部分内容,之后我会单独剥离重新梳理一篇

在正式开发中,有一些控件的属性,我们可能会在测试阶段才发现会使用到,因为UI要一致!

最外层布局添加命名空间

xmlns:tools="/tools"

然后在Text中设置属性,如

<TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"tools:text="预览模式" />

基础属性

宽高:match_parent、wrap_content或自定义尺寸

<TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"text="text的属性使用"<!--字体颜色-->android:textColor=""<!--字体大小-->android:textSize="" />

居中属性

当前布局(针对自身布局 )

//自身宽度android:layout_width="match_parent"//俩者区别 :针对当前控件android:gravity="center"

当前布局(针对父布局 )

//自身宽度android:layout_width="wrap_content"//俩者区别 : 针对父控件android:layout_gravity="center"

实战属性

此部分主要包含在项目中常见的一些适配场景,在UI验收阶段经常需要处理这类型的问题,可以算是基础属性的一次小进阶

单行、多行显示

单行显示

方式 1

android:singleLine="true"

方式 2

android:maxLines="1"

多行显示

android:maxLines="自行在此处输入限制行数"

末尾为…

具体使用哪种显示方式主要有产品、UI确定,我们需要掌握的就是在以下场景中如何满足需求方提出的需求即可~

单行显示,末尾为…

android:singleLine="true"android:ellipsize="end"

固定多行行数,末尾为…

//超过三行末尾显示省略号android:maxLines="3"android:ellipsize="end"

限制字数,末尾为…

有时候我们也通过限制字数显示的方式,来实现UI效果

android:maxEms="21"android:maxLines="3"android:ellipsize="end"

字距、行距

的时候,正好又用到了相关属性,发现自己有记录过,所以来修整一下

设置字距、行距后 效果

伪代码

<TextViewandroid:id="@+id/desc"tools:text="近期市场表现较活跃的行业;随着市场风格切换,行业轮动可能频繁,收益风险比较大,建议适量配置。"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:ellipsize="end"android:enabled="false"android:letterSpacing="0.05"android:lineSpacingExtra="2dp"android:maxLines="2"android:paddingHorizontal="8dp"android:paddingVertical="4dp"android:textColor="#999999"android:textSize="10sp" />

字距

通过设置android:letterSpacing属性从而设置水平方向文本的字间距

xml

android:letterSpacing="0.05"

代码中动态设置

textView.setLetterSpacing(0.05);

行距

通过设置TextView属性中android:lineSpacingExtraandroid:lineSpacingMultiplier来达到行间距效果

设置行间距android:lineSpacingExtra

android:lineSpacingExtra="2dp"

设置行间距的倍数android:lineSpacingMultiplier

所想:虽未看源码,但是个人感觉系统默认提供了行距,而通过该方式修改行距倍数是针对于默认值,并非像上方设置的行距值

android:lineSpacingMultiplier='1.2'

当然也可以一起使用,但我感觉意义好像不大,具体主要还是看调试的页面场景吧

android:lineSpacingExtra=""android:lineSpacingMultiplier=""

TextView专用属性

字体样式(标准、加粗)

字体风格包含斜体、加粗、无效果(我常用的只有一个加粗效果)

//字体加粗android:textStyle="bold"

如未设置此属性,系统默认其实写下了normal样式

android:textStyle="normal"

有时我们需动态改变TextView的textStyle,直接通过控件调用setTypeface方法

setTypeface(Typeface.defaultFromStyle(Typeface.风格样式));

同串多效果(富文本)

关于同串多效果的操作我有一篇更详细的blog,大家尽可前往 一个String字符串的万种样式 ~

同串多风格也就证明当前的字符串内有多种字体效果

因为有风格效果,所以我们创建俩个字体style放置于styles.xml 中

<style name="textStyle_blue"><item name="android:textSize">13dp</item><item name="android:textColor">#4d7bae</item></style><style name="textStyle_red"><item name="android:textSize">16dp</item><item name="android:textColor">#f00000</item><item name="android:textStyle">italic</item></style>

使用时一般新建SpannableString进行赋值,然后将设置效果塞到对应的TextView中即可

//需要组装的内容SpannableString styledText = new SpannableString("EveryBaby");//样式1 - 呈现效果 Every 为13sp、蓝色styledText.setSpan(new TextAppearanceSpan(this, R.style.textStyle_blue), 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//样式2 - 呈现效果 Baby 为16sp、红色、斜体styledText.setSpan(new TextAppearanceSpan(this, R.style.textStyle_red), 5, styledText.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);//将组装好的效果设置到对应的TextView控件中mDisplay.setText(styledText);

扩展内容

其中主要用到了setSpan的方法,针对此项科普一番 ~

setSpan主要作用于SpannableString或SpannableStringBuilder特定范围的字符串的样式设置,可以设置多个(多种)效果(字体大小、颜色、样式)

参数分析

SetSpan() - void setSpan(Object what,int start,int end,int flags)

object what

对应的各种Span,后面会提到

int start

开始应用指定Span的位置,索引从0开始

int end

结束应用指定Span的位置,特效并不包括这个位置。比如如果这里数为3(即第4个字符),第4个字符不会有任何特效

int flags

取值如下

EditText专用属性

EditText 自动弹出键盘与隐藏键盘

AndroidMainfest中在对应的Activity进行属性设置

显示软键盘

//显示软键盘android:windowSoftInputMode="stateVisible|adjustResize"

如:

<activityandroid:name=".mine.activity.FeedBackActivity"android:windowSoftInputMode="stateVisible|adjustResize"/>

隐藏软键盘

//隐藏软键盘android:windowSoftInputMode="stateHidden|adjustResize"

如:

<activityandroid:name=".mine.activity.FeedBackActivity"android:windowSoftInputMode="stateHidden|adjustResize"/>

InputType类型限制

xml 内设置

//输入类型为没有指定明确的类型的特殊内容类型android:inputType="none"//输入类型为普通文本android:inputType="text"//输入类型为数字文本android:inputType="number"//输入类型为电话号码android:inputType="phone"//输入类型为日期和时间android:inputType="datetime"//输入类型为{@link#TYPE_CLASS_DATETIME}的缺省变化值,只允许输入一个日期。android:inputType="date"//输入类型为{@link#TYPE_CLASS_DATETIME}的缺省变化值,只允许输入一个时间。android:inputType="time"//输入类型为小数数字,允许十进制小数点提供分数值。android:inputType="numberDecimal"//输入类型为数字是带符号的,允许在开头带正号或者负号android:inputType="numberSigned"//输入类型为数字密码android:inputType="numberPassword"//输入类型为自动完成文本类型android:inputType="textAutoComplete"//输入类型为自动纠正文本类型android:inputType="textAutoCorrect"//输入类型为所有字符大写android:inputType="textCapCharacters"//输入类型为每句的第一个字符大写android:inputType="textCapSentences"//输入类型为每个单词的第一个字母大写android:inputType="textCapWords"//输入法多行文本android:inputType="textImeMultiLine"//进行输入时,输入法无提示android:inputType="textNoSuggestions"//输入一个短的,可能是非正式的消息,如即时消息或短信。android:inputType="textShortMessage"//输入长内容,可能是正式的消息内容,比如电子邮件的主体android:inputType="textLongMessage"//输入文本以过滤列表等内容android:inputType="textFilter"//输入一个电子邮件地址android:inputType="textEmailAddress"//输入电子邮件主题行android:inputType="textEmailSubject"//输入一个密码android:inputType="textPassword"//输入对用户可见的密码android:inputType="textVisiblePassword"//输入人的姓名android:inputType="textPersonName"//输入邮寄地址android:inputType="textPostalAddress"//输入语音发音输入文本,如联系人拼音名称字段android:inputType="textPhonetic"//输入URIandroid:inputType="textUri"//输入网页表单中的文本android:inputType="textWebEditText"//输入网页表单中的邮件地址android:inputType="textWebEmailAddress"//输入网页表单中的密码android:inputType="textWebPassword"

代码动态设置

//对应的EditTextEditText editText;//输入类型为没有指定明确的类型的特殊内容类型editText.setInputType(InputType.TYPE_NULL);//输入类型为普通文本editText.setInputType(InputType.TYPE_CLASS_TEXT);//输入类型为数字文本editText.setInputType(InputType.TYPE_CLASS_NUMBER);//输入类型为电话号码editText.setInputType(InputType.TYPE_CLASS_PHONE);//输入类型为日期和时间editText.setInputType(InputType.TYPE_CLASS_DATETIME);//输入类型为{@link#TYPE_CLASS_DATETIME}的缺省变化值,允许输入日期和时间。editText.setInputType(InputType.TYPE_DATETIME_VARIATION_NORMAL);//输入类型为{@link#TYPE_CLASS_DATETIME}的缺省变化值,只允许输入一个日期。editText.setInputType(InputType.TYPE_DATETIME_VARIATION_DATE);//输入类型为{@link#TYPE_CLASS_DATETIME}的缺省变化值,只允许输入一个时间。editText.setInputType(InputType.TYPE_DATETIME_VARIATION_TIME);//输入类型为决定所给文本整体类的位掩码editText.setInputType(InputType.TYPE_MASK_CLASS);//输入类型为提供附加标志位选项的位掩码editText.setInputType(InputType.TYPE_MASK_FLAGS);//输入类型为决定基类内容变化的位掩码editText.setInputType(InputType.TYPE_MASK_VARIATION);//输入类型为小数数字,允许十进制小数点提供分数值。editText.setInputType(InputType.TYPE_NUMBER_FLAG_DECIMAL);//输入类型为数字是带符号的,允许在开头带正号或者负号editText.setInputType(InputType.TYPE_NUMBER_FLAG_SIGNED);//输入类型为{@link#TYPE_CLASS_NUMBER}的缺省变化值:为纯普通数字文本editText.setInputType(InputType.TYPE_NUMBER_VARIATION_NORMAL);//输入类型为{@link#TYPE_CLASS_NUMBER}的缺省变化值:为数字密码editText.setInputType(InputType.TYPE_NUMBER_VARIATION_PASSWORD);//输入类型为自动完成文本类型editText.setInputType(InputType.TYPE_TEXT_FLAG_AUTO_COMPLETE);//输入类型为自动纠正文本类型editText.setInputType(InputType.TYPE_TEXT_FLAG_AUTO_CORRECT);//输入类型为所有字符大写editText.setInputType(InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS);//输入类型为每句的第一个字符大写editText.setInputType(InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);//输入类型为每个单词的第一个字母大写editText.setInputType(InputType.TYPE_TEXT_FLAG_CAP_WORDS);//输入多行文本editText.setInputType(InputType.TYPE_TEXT_FLAG_IME_MULTI_LINE);//进行输入时,输入法无提示editText.setInputType(InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS);//输入一个短的,可能是非正式的消息,如即时消息或短信。editText.setInputType(InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE);//输入长内容,可能是正式的消息内容,比如电子邮件的主体editText.setInputType(InputType.TYPE_TEXT_VARIATION_LONG_MESSAGE);//输入文本以过滤列表等内容editText.setInputType(InputType.TYPE_TEXT_VARIATION_FILTER);//输入一个电子邮件地址editText.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);//输入电子邮件主题行editText.setInputType(InputType.TYPE_TEXT_VARIATION_EMAIL_SUBJECT);//输入一个密码editText.setInputType(InputType.TYPE_TEXT_VARIATION_PASSWORD);//输入老式的普通文本editText.setInputType(InputType.TYPE_TEXT_VARIATION_NORMAL);//输入人名editText.setInputType(InputType.TYPE_TEXT_VARIATION_PERSON_NAME);//输入邮寄地址editText.setInputType(InputType.TYPE_TEXT_VARIATION_POSTAL_ADDRESS);//输入语音发音输入文本,如联系人拼音名称字段editText.setInputType(InputType.TYPE_TEXT_VARIATION_PHONETIC);//输入URIeditText.setInputType(InputType.TYPE_TEXT_VARIATION_URI);//输入对用户可见的密码editText.setInputType(InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);//输入网页表单中的文本editText.setInputType(InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT);//输入网页表单中的邮件地址editText.setInputType(InputType.TYPE_TEXT_VARIATION_WEB_EMAIL_ADDRESS);//输入网页表单中的密码editText.setInputType(InputType.TYPE_TEXT_VARIATION_WEB_PASSWORD);

代码中使用

单个类型设置

editText.setInputType(InputType.TYPE_CLASS_TEXT);

多个类型设置 (使用 | 进行连接)

editText.setInputType(InputType.TYPE_CLASS_TEXT|InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。