章节索引 :

前面 6 节分别学习了 Android 的六大布局,它的功能就是将 View 及 ViewGroup 按照一定的规则摆放起来,那么接下来的章节我们就来学习 Android 中常见的 View。

首先我们看看 TextView,它是 Android 中很常用的 View,用来展示文本信息。它通常会其他的 View 一起搭配使用,用来作为提示信息。比如我们前面做过的登陆界面,就会搭配 EditText,显示输入的内容提示。

1. TextView 的基本属性

  • android:text:
    用来定义TextView上要展示的文本内容。
  • android:textSize:
    设置TextView显示文本的字体大小。
  • android:textColor:
    设置TextView显示文本的颜色。
  • android:textAllCaps:
    设置文本是否全是大写,true 表示大写,false 表示保持原样。
  • android:letterSpacing:
    设置每个字之间的间距
  • android:hint:
    设置一个默认文本作为,当没有设置文本内容的时候会展示在 TextView 当中。很多时候我们的 TextView 会根据服务端的内容动态设置,此时就可以通过android:hint为 TextView 设置一个默认值,在没有拉到服务器数据的时候展示默认文本。

以上是最常用的属性,大多数场景已经足够,通过这些属性我们就可以展示我们需要的文本信息了,如下:

<TextView  xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:padding="20dp"
    android:text="跟着超哥学Android"
    android:textColor="#CE4F2F"
    android:textSize="40sp"
    />

注意:通常我们的 xml 最外层是一个 ViewGroup,它帮我们摆放各种 View,但是如果只有一个 View 的时候,是可以直接放在 xml 里面的。
代码比较简单,直接看效果:

TextView基本样式

2. TextView 的高级属性

也许你并不满足于普通样式的 TextView,那么接下来介绍一些高级属性,让你的文本框更多丰富生动。

  • android:capitalize:
    指定输入首字母大写的方式,不过目前已弃用,如果需要设置可以使用后面将会学到的 EditText。支持以下四个枚举值:
    • 0: 不需要首字母大写
    • 1: 每一句话首字母大写
    • 2: 每个单词的首字母大写
    • 3: 每个字母都需要大写
  • android:inputType
    设置文本的类型,比如可以指定显示电话、日期、时间、数字、或者密码等等。
  • android:shadowColor
    设置阴影颜色,需要配合 shadowRadius 一起使用。
  • android:shadowRadius
    文字阴影的模糊半径。
  • android:shadowDx:
    设置阴影在水平方向上的偏移量。
  • android:shadowDy:
    设置阴影在竖直方向上的偏移量。
  • android:background:
    设置文本的背景,可以直接设置图片,也可以设置 drawable 资源。

2.1 TextView 的阴影效果

下面我们加上一些高级属性,可以做出不同寻常的效果:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:padding="20dp"
    android:shadowColor="#5919C9"
    android:shadowDx="20.0"
    android:shadowDy="20.0"
    android:shadowRadius="4.5"
    android:text="跟着超哥学Android"
    android:textColor="#BECF0B"
    android:textSize="40sp" />

我们在第一个 demo 的基础之上加上了阴影效果,如图:

TextView阴影效果

2.2 TextView 的背景

针对 TextView 有一个android:background属性,可以为我们的文本框设置一个自定义的背景图,通常有两种设置方法:

  • 直接设置一个图片作为背景图;

  • 设置一个 drawable 资源。
    (关于 drawable 的介绍可以参考第四节)
    直接设置图片比较好理解,就不做过多的演示,大家可以自行尝试,这里主要讲解一下采用 drawable 资源的用法。

    1. 首先我们找到“src” -> “main” -> “res” -> “drawable”目录,在里面右键新建一个“Drawable Resource File”,输入文件名:text_background;
    2. 可能 IDE 会默认生成部分代码,比如<selector/>,删除默认生成的代码,添加一个<shape/>标签,用来指定 TextView 的外形;
    3. <shape/>标签中添加<stroke/>,设置 TextView 外形的边框样式,设置边框的宽度和颜色;
    4. <shape/>中继续添加<padding/>标签,用来设置 TextView 中文本和边框的距离;
    5. 最后在<shape/>标签中添加<gradient/>,为 TextView 的背景添加色彩渐变。

最终整体代码修改如下:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- 设置边框颜色和宽度 -->
    <stroke
        android:width="10dp"
        android:color="#000000" />

    <!-- 设置边距 -->
    <padding
        android:bottom="5dp"
        android:left="5dp"
        android:right="5dp"
        android:top="5dp" />

    <!-- 添加渐变效果 -->
    <gradient
        android:angle="45"
        android:endColor="#EEC5C5"
        android:startColor="#0A22A5" />

</shape>

至此,drawable 资源编写完毕,我们就可以在 TextView 中使用了。直接修改TextView的代码,添加android:background属性:

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:background="@drawable/text_backgroud"
    android:padding="20dp"
    android:shadowColor="#5919C9"
    android:shadowDx="20.0"
    android:shadowDy="20.0"
    android:shadowRadius="4.5"
    android:text="跟着超哥学Android"
    android:textColor="#BECF0B"
    android:textSize="40sp" />

最终效果:

TextView背景效果

3. 小结

TextView 是最常用的一个 Android 原生 View,虽然它的特效属性比较多,但是其实工作中可能大部分时候还是只会用基本属性,所以更多的特效大家只需要了解即可。后面将要学习的很多控件都是基于 TextView 来设计开发的,会有很多的共同之处,希望大家学完之后能够动手实践一些样式,比如搭配前面学习的各种 Layout 来使用,试试不看例子,自己实现一个登陆页面吧。

环境搭建,开发相关
Android 系统背景及结构概述 Android 开发环境搭建 Genymotion 的安装与使用 Android 工程解析及使用 Android 程序签名打包
常用 UI 布局
Android 的 UI 根基 View与View Android 线性布局 LinearLayout Android相对布局RelativeLayout Android 表格布局 TableLayout Android 网格布局 GridLayout Android 帧布局 FrameLayout Android绝对布局AbsoluteLayout
基础控件
Android 文本框 TextView Android 文本输入框 EditText 按钮 Button/ImageButton 选择框 RadioButton/Check 开关控件ToggleButton/Switch Android 图片控件 ImageView Android 进度条 ProgressBar Android 拖动条 SeekBar Android 评分条 RatingBar Android 滚动条 ScrollView 轮播滚动视图 ViewFlipper
Adapter 相关控件
Android 适配器 Adapter Android 列表控件 ListView Android 网格视图 GridView Android 下拉选择框 Spinner 自动补全文本框 AutoCompleteText 折叠列表 ExpandableListView
提示类控件
吐司提示:Toast 的使用方法 状态栏通知:Notification 对话框:AlertDialog 悬浮窗:PopupWindow
菜单类控件
菜单:Menu
其他控件
视频页面:ViewPager 侧滑菜单:DrawerLayout
事件处理机制
基于监听的事件处理机制 Handler 消息传递机制 触摸事件分发处理 AsyncTask:异步任务 Android 手势处理
Android 四大组件
活动:Activity 服务:Service 广播接收器:Broadcast Receiver 内容提供者 - Content Provider
数据存储
文件存储 SharedPreferences 存储 数据库:SQLite 的使用
网络编程
HTTP 使用详解 xml 数据解析 JSON 数据解析 网页视图:WebView Socket 网络接口
绘图与动画
图片资源:Drawable 位图:Bitmap
多媒体开发
媒体播放器:MediaPlayer 相机:Camera 音频录制:MediaRecorder
并发编程
多线程