已经有一个多月没有写文章了,当然,我没失踪,我还活着!因为换了新的工作环境,所以在接手项目的时候花了点时间……不为自己做过多借口,今后持续更新好内容(还是希望自己能周更)!
这篇文章最初是记录一个全屏模式下输入框被软键盘覆盖的问题,要求背景不动,输入框上移!碰巧之后项目发版,有一点时间,就想着能不能将Android文本使用做一个总结!结合之前自己做的一些笔记,这篇文章就顺利产出了!
其实换工作之后,我更希望能产出高质量的文章,所以我对于这篇文章的期待其实蛮高的,希望这篇文章能帮助所有开发者解决在Android开发过程中遇到的文本问题。当然,现在文章记录的是自己遇到的一些问题(不是很全面),希望各位在Android开发中遇到各种关于文本类的问题可以给我留言,我们一起来讨论,研究对应的解决方案,完善这篇文章及项目!
大家在学习使用Android文本软键盘内容的时候遇到什么问题,欢迎在我的公众号aserbao给我留言,无偿服务!同时,欢迎大家来加入微信群二维码讨论群,一起讨论Android开发技术!群二维码定时在我公众号更新!
项目效果
TextView的基本使用
TextView的基本属性
常用的属性:
<TextView
android:text="@string/long_text"
android:textSize="10sp"
android:textColor="@color/black"
android:shadowRadius="8"
android:shadowColor="@color/black70"
android:shadowDy="4"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
下面这些基本包含TextView的所有属性,里面很多属性大多数情况下我们都使用不到,可以稍微了解下,可以直接跳过属性列表!
属性 | 作用 |
---|---|
android:text | 设置显示文本. |
android:textAppearance | 设置文字外观 |
android:textColor | 设置文本颜色 |
android:textColorHighlight | 被选中文字的底色,默认为蓝色 |
android:textColorHint | 设置提示信息文字的颜色,默认为灰色。与hint一起使用。 |
android:textColorLink | 文字链接的颜色. |
android:textScaleX | 设置文字之间间隔,默认为1.0f。 |
android:textSize | 设置文字大小,推荐度量单位”sp”,如”15sp” |
android:textStyle | 设置字形[bold(粗体) 0, italic(斜体) 1, bolditalic(又粗又斜) 2] 可以设置一个或多个,用“|”隔开 |
android:typeface | 设置文本字体 |
android:height | 设置文本区域的高度,支持度量单位:px(像素)/dp/sp/in/mm(毫米) |
android:maxHeight | 设置文本区域的最大高度 |
android:minHeight | 设置文本区域的最小高度 |
android:width | 设置文本区域的宽度,支持度量单位:px(像素)/dp/sp/in/mm(毫米),与layout_width 的区别看这里。 |
android:shadowColor | 指定文本阴影的颜色,需要与shadowRadius一起使用。 |
android:shadowDx | 设置阴影横向坐标开始位置。 |
android:shadowDy | 设置阴影纵向坐标开始位置。 |
android:shadowRadius | 设置阴影的半径。一般设置为5.0的效果比较好。 |
android:singleLine | 设置单行显示。如果和layout_width一起使用,当文本不能全部显示时,后面用“…”来表示。如android:text=”test_ singleLine “ |
android:singleLine=”true” android:layout_width=”20dp” | 将只显示“t…”。如果不设置singleLine或者设置为false,文本将自动换行 |
android:cursorVisible | 设定光标为显示/隐藏,默认显示。 |
android:digits | 设置允许输入哪些字符。如“1234567890.±*/% ()” |
android:drawableTop\Bottom\Left\Right | 在text的上、下、左、右方输出一个drawable |
android:drawablePadding | 设置text与drawable(图片)的间隔 |
android:editable | 设置是否可编辑。 |
android:editorExtras | 设置文本的额外的输入数据。 |
android:ellipsize | 设置当文字过长时,该控件该如何显示。有如下值设置:”start”—-省略号显示在开头;”end” ——省略号显示在结尾;”middle”—-省略号显示在中间;”marquee” ——以跑马灯的方式显示(动画横向移动) |
android:freezesText | 设置保存文本的内容以及光标的位置。 |
android:gravity | 设置文本位置,设置成“center”,文本将居中显示。 |
android:hintText | 为空时显示的文字提示信息,可通过textColorHint设置提示信息的颜色。此属性在 EditView中使用,但是这里也可以用。 |
android:imeOptions | 附加功能,设置右下角IME动作与编辑框相关的动作,如actionDone右下角将显示一个“完成”,而不设置默认是一个回车符号。这个在EditView中再详细说明,此处无用。 |
android:imeActionId | 设置IME动作ID |
android:imeActionLabel | 设置IME动作标签 |
android:includeFontPadding | 设置文本是否包含顶部和底部额外空白,默认为true。 |
android:inputMethod | 为文本指定输入法,需要完全限定名(完整的包名)。例如:com.google.android.inputmethod.pinyin |
android:inputType | 设置文本的类型,用于帮助输入法显示合适的键盘类型。在EditView中再详细说明,这里无效果。 |
android:linksClickable | 设置链接是否点击连接,即使设置了autoLink。 |
android:marqueeRepeatLimit | 在ellipsize指定marquee的情况下,设置重复滚动的次数,当设置marquee_forever时表示无限次。 |
android:ems | 设置TextView的宽度为N个字符的宽度。这里测试为一个汉字字符宽度 |
android:maxEms | 设置TextView的宽度为最长为N个字符的宽度。与ems同时使用时覆盖ems选项。 |
android:minEms | 设置TextView的宽度为最短为N个字符的宽度。与ems同时使用时覆盖ems选项。 |
android:maxLength | 限制显示的文本长度,超出部分不显示。 |
android:lines | 设置文本的行数,设置两行就显示两行,即使第二行没有数据。 |
android:maxLines | 设置文本的最大显示行数,与width或者layout_width结合使用,超出部分自动换行,超出行数将不显示。 |
android:minLines | 设置文本的最小行数,与lines类似。 |
android:lineSpacingExtra | 设置行间距。 |
android:lineSpacingMultiplier | 设置行间距的倍数。如”1.2” |
android:numeric | 如果被设置,该TextView有一个数字输入法。此处无用,设置后唯一效果是TextView有点击效果,此属性在EdtiView将详细说明。 |
android:password | 以小点”*”显示文本 |
android:phoneNumber | 设置为电话号码的输入方式。 |
android:privateImeOptions | 设置输入法选项,此处无用,在EditText将进一步讨论。 |
android:scrollHorizontally | 设置文本超出TextView的宽度的情况下,是否出现横拉条。 |
android:selectAllOnFocus | 如果文本是可选择的,让他获取焦点而不是将光标移动为文本的开始位置或者末尾位置。 需要再EditText中设置。 |
android:maxWidth | 设置文本区域的最大宽度 |
android:minWidth | 设置文本区域的最小宽度 |
图文混排的三种实现方式
1. drawableTop,DrawableBottom,DrawableLeft,drawableRight
<TextView
android:id="@+id/one_pictxt_tv"
android:drawableLeft="@drawable/emoji_00"
android:drawableRight="@drawable/emoji_01"
android:drawableBottom="@drawable/emoji_02"
android:drawableTop="@drawable/emoji_03"
android:text="第一种方式:\n通过drawableLeft来实现\n上下左右中间文字"
style="@style/picTxt_tv_style"
/>
2. 通过ImageSpan或者DynamicDrawableSpan实现
SpannableString dynamicDrawableSpan = new SpannableString("DynamicDrawableSpan");
DynamicDrawableSpan drawableSpan =
new DynamicDrawableSpan(DynamicDrawableSpan.ALIGN_BASELINE) {