共计 3743 个字符,预计需要花费 10 分钟才能阅读完成。
前言
大家好!在前几篇文章里,我们详细介绍了 Android
中的常用布局,使大家对 Android
中的页面布局有了一定认识,而对于布局中使用的一些 UI
控件如 Button
、TextView
等,有的读者可能还存在一些困惑。在接下来文章中,我们将详细介绍 Android
开发中经常使用的 UI
控件,敬请期待!
简介
TextView
(文本框),是 Android
中用于显示文本的一个控件。
常用属性详解
-
id
:为TextView
设置一个组件 id,根据 id,我们可以在 Java 代码中通过findViewById()
的方法获取到该对象,然后进行相关属性的设置。 -
layout_width
:控件的宽度,可以写成wrap_content
或match_parent
,前者是宽度自适应(控件中显示的内容多大,控件就多大),而后者宽度会填满该控件所在的父容器;也可以设置成特定的大小,如上 200dp。 -
layout_height
:组件的宽度,内容同上。 -
gravity
:设置控件中内容的位置,如上center
表示居中。 -
text
:设置显示的文本内容,一般我们是把字符串写到string.xml
文件中,然后通过@String/xxx
取得对应的字符串内容的,可避免图上黄色警告。 -
textColor
:设置字体颜色,同上,也需通过colors.xml
资源来引用。 -
textStyle
:设置字体风格,三个可选值:normal
(无效果),bold
(加粗),italic
(斜体)。 -
textSize
:字体大小,单位用sp
。 -
backgroud
:控件的背景颜色,填充整个控件,也可以是图片或者drawable
资源文件。
实际开发示例
1. 带图片的 TextView
-
drawableXxx
:可以设置四个方向的图片:drawableTop
(上),drawableButtom
(下),drawableStart
(左),drawableEnd
(右) 另外,你也可以使用drawablePadding
来设置图片与文字间的间距。
2. 带阴影的 TextView
-
shadowColor
:设置阴影颜色,需要与shadowRadius
一起使用。 -
shadowRadius
:设置阴影的模糊程度。 -
shadowDx
:设置阴影在水平方向的偏移,即水平方向阴影开始的横坐标位置。 -
shadowDy
:设置阴影在竖直方向的偏移,即竖直方向阴影开始的纵坐标位置。
3. 带边框的 TextView
-
background="@drawable/bg_text"
:编写一个ShapeDrawable
的资源文件,放在res
下的drawable
目录下。
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<!-- 填充色 -->
<solid android:color="#03A9F4" />
<!-- 描边及描边尺寸 -->
<stroke
android:width="8dp"
android:color="#FF5722" />
<!-- 圆角尺寸, 四个角相同可直接使用 android:radius-->
<corners
android:bottomLeftRadius="12dp"
android:bottomRightRadius="12dp"
android:topLeftRadius="8dp"
android:topRightRadius="8dp" />
</shape>
属性大全
上面只是简单介绍了 TextView
中一些常用的使用方法,在 TextView
中,其属性还有很多。下面详细列举 TextView
在XML中各种属性,供大家 参考查阅。
android:text
:设置显示文本内容。
android:textColor
:设置文本颜色。
android:textSize
:设置文字字体大小,单位sp
。
android:hint
:Text 为空时显示的文字提示信息,可通过 textColorHint
设置提示信息的颜色。
android:textColorHint
:设置提示信息文字的颜色,默认为灰色,与 hint 一起使用。
android:textStyle
:设置字体风格,三个可选值:normal
(无效果),bold
(加粗),italic
(斜体)。
android:typeface
:设置文本字体,必须是以下常量值之一:normal 0、sans 1、serif 2、monospace(等宽字体) 3。
android:maxWidth
:置文本区域的最大宽度。
android:minWidth
:设置文本区域的最小宽度。
android:maxHeight
:设置文本区域的最大高度。
android:minHeight
:设置文本区域的最小高度。
android:textScaleX
:设置文字之间间隔,默认为 1.0f。
android:autoLink
:设置是否当文本为 URL 链接 /email/ 电话号码 /map 时,文本显示为可点击的链接。可选值(none/web/email/phone/map/all)。
android:autoText
:如果设置,将自动执行输入值的拼写纠正,在显示输入法并输入的时候起作用。
android:capitalize
:设置英文字母大写类型,需要弹出输入法才能看得到。
android:digits
:设置允许输入哪些字符。如“1234567890.+-*/%n()’‘。
android:drawableXxx
:在 text 的 Xxx
方向输出一个 drawable,如图片。
android:drawablePadding
:设置 text 与 drawable(图片)的间隔,与 drawableLeft
、drawableRight
、drawableTop
、drawableBottom
一起使用,可设置为负数,单独使用没有效果。
android:ellipsize
:设置当文字过长时, 该控件该如何显示。有如下值设置:”start”—–省略号显示在开头;”end”——省略号显示在结尾;”middle”—- 省略号显示在中间;”marquee”——以跑马灯的方式显示(动画横向移动)。
android:freezesText
:设置保存文本的内容以及光标的位置。
android:gravity
:设置文本位置,如设置成“center”,文本将居中显示。
android:includeFontPadding
:设置文本是否包含顶部和底部额外空白,默认为 true。
android:inputMethod
:为文本指定输入法,需要完全限定名(完整的包名)。
android:inputType
:设置文本的类型,用于帮助输入法显示合适的键盘类型。
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:singleLine
:设置单行显示。如果和 layout_width 一起使用,当文本不能全部显示时,后面用“…”来表示。
android:maxLines
:设置文本的最大显示行数,与 width 或者 layout_width 结合使用,超出部分自动换行,超出行数将不显示。
android:minLines
:设置文本的最小行数,与 lines 类似。
android:linksClickable
:设置链接是否点击连接,即使设置了autoLink
。
android:lineSpacingExtra
:设置行间距。
android:lineSpacingMultiplier
:设置行间距的倍数。如”1.2”。
android:scrollHorizontally
:设置文本超出 TextView 的宽度的情况下,是否出现横拉条。
android:shadowColor
:指定文本阴影的颜色,需要与 shadowRadius
一起使用。
android:shadowRadius
:设置阴影的半径,太小了无效果。
android:shadowDx
:设置阴影横向坐标开始位置。
android:shadowDy
:设置阴影纵向坐标开始位置。
结语
以上就是 Android
中最常用的 UI 控件 TextView
的介绍,开发示例中只列举了几种最常用的使用方式。在接下来的几篇文章中,还会有其他更加精彩的Android
UI 控件的介绍,敬请期待!
PS: 如果还有未看懂的小伙伴,欢迎加入我们的 QQ 技术交流群:892271582,里面有各种大神回答小伙伴们遇到的问题哦~