【8】Android UI控件 - TextView

本文深入解析Android中TextView控件的使用方法与高级技巧,包括基础属性设置、阴影效果、文字排版、自动换行、跑马灯效果、图标结合、链接识别及自定义背景资源等,帮助开发者掌握TextView的全方位运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

前言

基础应用

进阶

阴影效果

字距&行距

自动换行

跑马灯

文字+icon

识别链接类型

编写drawable资源文件


前言

前面学了Android的五大基本布局,在安卓API文档还发现了其他布局。

诸如:PercentRelativeLayout ,CoordinatorLayout , DrawerLayout...

我们可暂做了解,当有实际使用需求的时候再进行进一步的学习。

下面直接快马加鞭进入UI控件 - TextView 的学习。

基础应用

相关属性

id:为TextView设置一个组件id,可在Java代码中通过 findViewById() 方法获取到该对象,前面我们使用相对布局(RelativeLayout)时,参考组件即设置为id。

layout_width / layout_height:组件的宽度/高度,一般设置为 "wrap_content" (大小刚好足够显示当前控件里的内容)、"match_parent (fill_parent)"(填满该控件所在的父容器) ;当然也可以直接设置具体的值。

gravity:设置控件中内容的对齐方向。

text:设置显示的文本内容。

textColor:设置字体颜色。

textStyle:设置字体风格,可设置为 "normal"(无效果), "bold"(加粗), "italic"(斜体)

textSize:字体大小,单位一般是用 sp 。

background:控件的背景颜色,可以理解为填充整个控件的颜色,也可以设置图片填充。

示例

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center">

    <TextView
        android:id="@+id/text1"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:background="#000000"
        android:gravity="center"
        android:text="Text - test"
        android:textColor="#00f00f"
        android:textSize="40sp"
        android:textStyle="bold|italic" />

</LinearLayout>

效果图

进阶

阴影效果

相关属性

shadowColor:设置阴影颜色,需与shadowRadius搭配使用。

shadowRadius:设置阴影的模糊程度。

shadowDx:设置阴影在水平方向的偏移。

hadowDy:设置阴影在竖直方向的偏移。

示例

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:tools="http://schemas.android.com/tools"
    android:gravity="center"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/text1"
        android:layout_width="300dp"
        android:layout_height="300dp"
        android:gravity="center"
        android:shadowColor="#CA1B1B"
        android:shadowDx="10.0"
        android:shadowDy="10.0"
        android:shadowRadius="2.0"
        android:text="Text - test"
        android:textColor="#03A9F4"
        android:textSize="40sp"
        android:textStyle="bold|italic" />
    
</LinearLayout>

效果图

字距&行距

相关属性

textScaleX:控制字体水平方向的缩放。

lineSpacingExtra:设置行间距,通常采用 dp为单位。

lineSpacingMultiplier:设置行间距的倍数。

示例

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">

    <TextView
    android:layout_width="100dp"
    android:layout_height="wrap_content"
    android:text="原字距"/>

    <TextView
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:textScaleX="1.5"
        android:text="字距放大"/>

    <TextView
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:textScaleX="0.5"
        android:text="字距缩小"/>

    <TextView
        android:layout_width="100dp"
        android:layout_height="wrap_content" />

    <TextView
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:text="原行距    原行距    原行距    原行距    原行距"/>

    <TextView
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:lineSpacingExtra = "10dp"
        android:text="行距为10           行距为10"/>

    <TextView
        android:layout_width="100dp"
        android:layout_height="50dp"
        android:lineSpacingMultiplier = "2.0"
        android:text="行距倍数2.0     行距倍数2.0"/>

</LinearLayout>

效果

自动换行

相关属性

singleLine:默认为 false,即自动换行模式;如需要一行显示完,则需要设置为 true

singleLine设置为 true 的时候,我们还可以通过 ellipsize 进行进一步设置

ellipsize = "end"          省略号在结尾
ellipsize = "start"         省略号在开头
ellipsize = "middle"     省略号在中间
ellipsize = "marquee"  跑马灯

示例

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:singleLine = "true"
        android:text="换行关闭  换行关闭  "/>

    <TextView
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:singleLine = "false"
        android:text="自动换行  自动换行"/>

</LinearLayout>

效果图

跑马灯

相关属性

注意:部分属性前面 自动换行 部分已介绍,不再重复

marqueeReatLimit :滚动次数,设置 marquee_forever (永久滚动)

focusable:设置为ture,允许获得焦点

focusableInTouchMode:设置为ture,可以通过触摸获取焦点。

示例

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="100dp"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit="marquee_forever"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:text="下雨天留客天留我不留 下雨天留客天留我不留 下雨天留客天留我不留"/>

</LinearLayout>

效果图

文字+icon

相关属性

drawableTop:可绘制到文本上方的图
drawableButtom:可绘制到文本下方的图
drawableLeft:可绘制到文本左侧的图
drawableRight:可绘制到文本右侧的图
drawablePadding:设置图片与文字间的间距

TextView的各种间距

示例

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:drawableTop="@drawable/top"
        android:drawableLeft="@drawable/left"
        android:drawableRight="@drawable/right"
        android:drawableBottom="@drawable/botton"
        android:gravity="center"
        android:drawablePadding="4dp"
        android:text="正在搬砖的你" />

</LinearLayout>

效果图

识别链接类型

相关属性

autoLink:取值如下

none                        无,默认

all                            匹配所有可用类型

email                       匹配邮箱

map                         匹配地理位置

phone                     匹配电话号码手机

webControls          匹配Web URL

示例

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:autoLink="web"
        android:gravity="center"
        android:text="www.baidu.com" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:autoLink="email"
        android:gravity="center"
        android:text="email@163.com" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:autoLink="phone"
        android:gravity="center"
        android:text="10086" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:autoLink="map"
        android:gravity="center"
        android:text="1600 Amphitheatre Parkway, Mountain View, CA 94043" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:autoLink="all"
        android:gravity="center"
        android:text="www.baidu.com all@163.com  10086" />
    
</LinearLayout>

效果

编写drawable资源文件

步骤

创建 drawable 文件,root element 记得选择 shape

编写相关设置后,设置为 background 即可生效。

        android:background="@drawable/test_1"

部分相关属性

<solid android:color = "xxx">                                                               设置背景颜色

<stroke android:width = "xdp" android:color="xxx">                            设置边框的粗细及边框颜色

<padding androidL:bottom = "xdp"...>                                                 设置边距

<corners android:topLeftRadius="10px"...>                                         设置圆角

<gradient>                                                                                           设置渐变色

startColor:起始颜色

endColor:结束颜色

centerColor:中间颜色

angle:方向角度,等于0时,从左到右,然后逆时针方向转,当angle = 90度时从下往上

type:设置渐变的类型

示例

test_1.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
   
    <!-- 边框 -->
    <stroke android:width="10px" android:color="#0ff0f0"/>

    <!-- 渐变色 -->
    <gradient
        android:angle="270"
        android:endColor="#ffffff"
        android:startColor="#000000" />

    <!-- 弧边 -->
    <corners
        android:bottomLeftRadius="50px"
        android:bottomRightRadius="50px"
        android:topLeftRadius="50px"
        android:topRightRadius="50px" />

    <!-- 边距 -->
    <padding
        android:left="10dp"
        android:top="10dp"
        android:right="10dp"
        android:bottom="10dp"/>
</shape>

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    xmlns:tools="http://schemas.android.com/tools"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="200dp"
        android:layout_height="300dp"
        android:background="@drawable/test_1"
        android:gravity="center"
        android:text="天黑黑欲下雨" />

</LinearLayout>

效果图

关于shape更详细的教程可戳

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值