UI控件之TextView

原文地址:TextView(文本框)详解
TextView直接继承View,是EditText和Button的父类,所以,TextView的属性同样适用于EditText和Button。TextView的作用就是在界面上显示文本。
笔记:Android中的单位:
dp(dip)device independent pixels(设备独立像素),不同设备有不同的显示效果,和设备硬件有关,不依赖像素。
px*:pixels(像素):不同设备显示效果相同,*
pt:point,是一个标准的长度单位,1pt=1/72英寸,用于印刷业,简单易用
sp:scaled pixels(放大像素),主要用于字体显示。

先了解几个基础属性(ps:详细的属性查看具体的TextView API

id:组件id,根据id可在对应的java代码中通过findViewById()方法获取该对象,进行相关的设置。
layout_width:组件宽度 wrap_content根据内容自定义填充(直接理解为控件内容与多大就显示多大),match_parent 充满整个空间(也就是无论空间内容多大,这个组件直接填充整个空间),也可以设置为固定大小,不过在不同屏幕尺寸,固定大小的控件会不同。
layout_height:组价高度,属性同上。
gravity:控件中内容的对齐方向
text:所显示的文本内容,字符串资源一般写在string,xml中,在布局文件中通过@string/ 引用,在java文件中通过R.string.
textColor:字体的颜色,可以直接用颜色值表示,
textStyle:字体风格,有三个值可选:normal(无效果) bold(加粗) italic(斜体)
textSize:字体大小,单位一般sp
background:控件背景颜色,也可以设置为图片
autoLink:是否将指定格式文本转换成可单击超链接形式,如:web,email,phone,map,all all指全部包含。也可以在java代码调用setAutoLinMask(Linkify.All);
android:textColorLink 文字链接的颜色.
autoText:将URL、email 地址等链接自动转换为可单击的链接。
capitalize:输入文本转换为大写字母,属性值有:none不转换,sentences每个句子首字母大写 words:每个单词首字母大写,characters:每个字母都大写
cursorVisible:设置文本框的光标是否可见
digits:属性值为true时,该文本框对应一个数字输入法,并且只接受合法字符。如”1234567890.+-*/%\n()”
ellipsize:当显示文本超过TextView长度时如何处理文本内容,属性值有:none不作任何处理,start:在文本开始处阶段,并显示省略号,middle:在文本中间截断,并显示省略号,end:在文本末尾处截断,并显示省略号。marquee:滚动显示文本。
android:marqueeRepeatLimit 在ellipsize指定marquee的情况下,设置重复滚动的次数,当设置为marquee_forever时表示无限次。
android:ems 设置TextView的宽度为N个字符的宽度。
android:maxLength 限制显示的文本长度,超出部分不显示。
android:lines 设置文本的行数,设置两行就显示两行,即使第二行没有数据。
android:password 以小点”.”显示文本
android:phoneNumber 设置为电话号码的输入方式。
android:scrollHorizontally 设置文本超出TextView的宽度的情况下,是否出现横拉条。
android:shadowColor 指定文本阴影的颜色,需要与shadowRadius一起使用
android:shadowDx 设置阴影横向坐标开始位置。
android:shadowDy 设置阴影纵向坐标开始位置。
android:shadowRadius 设置阴影的半径。设置为0.1就变成字体的颜色了,一般设置为3.0的效果比较好。

android:textScaleX 设置文字之间间隔,默认为1.0f。
android:textSize 设置文字大小,推荐度量单位”sp”,如”15sp”
android:textStyle 设置字形[bold(粗体) 0, italic(斜体) 1, bolditalic(又粗又斜) 2] 可以设置一个或多个,用“|”隔开
android:typeface 设置文本字体,必须是以下常量值之一:normal 0, sans 1, serif 2, monospace(等宽字体) 3]

案例1:带阴影的TextView

<!--带阴影的TextView
    android:shadowColor:设置阴影颜色,需要与shadowRadius一起使用
    android:shadowRadius:设置阴影的模糊程度0-1,设为0.1就变成字体颜色了,建议使用0.3
    android:shadowDx:设置阴影在水平方向的偏移,就是水平方向阴影开始的横坐标位置
    android:shadowDy:设置阴影在竖直方向的偏移,就是竖直方向阴影开始的纵坐标位置 -->

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20sp"
        android:text="@string/shadow"
        android:shadowColor="#ff00ff"
        android:shadowDx="2.0"
        android:shadowDy="2.0"
        android:shadowRadius="0.3"/>

这里写图片描述
案例2:矩形边框,圆形边框
为·TextView设置边框背景,矩形边框或者圆形边框,写好资源文件,将TextView的背景background设置为该drawable资源即可。
相关的属性有:

<solid android:color="#ffffff">设置背景颜色
 <stroke android:width="2px" android:color="#000000"/>设置边框的粗细和边框的颜色
  <padding
        android:bottom="5dp"
        android:left="5dp"
        android:right="5dp"
        android:top="5dp"/>设置边距
         <corners android:bottomLeftRadius="15px"
        android:bottomRightRadius="15px"
        android:topLeftRadius="15px"
        android:topRightRadius="15px"/>设置圆角
        <gradient> 这个是设置渐变色的,可选属性有: startColor:起始颜色 endColor:结束颜色 centerColor:中间颜色 angle:方向角度,等于0时,从左到右,然后逆时针方向转,当angle = 90度时从下往上 type:设置渐变的类型

圆形边框:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 设置透明背景色-->
    <solid android:color="#adace6"/>
    <!-- 设置一个黑色边框-->
    <stroke android:width="2px" android:color="#000000"/>
    <!-- 设置四个圆角的半径-->
    <corners android:bottomLeftRadius="15px"
        android:bottomRightRadius="15px"
        android:topLeftRadius="15px"
        android:topRightRadius="15px"/>
    <!--设置边距,让空间大一些 -->
    <padding
        android:bottom="5dp"
        android:left="5dp"
        android:right="5dp"
        android:top="5dp"/>
</shape>

矩形边框,不设置corners 属性即可。
最后,在布局文件文件中,引用资源文件即可

 <!-- 带矩形边框的TextView -->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:text="@string/rectangle"
        android:background="@drawable/shape_rectangle"/>

    <!--带圆形边框的TextView -->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/roundness"
        android:background="@drawable/shap_roundness"/>

案例3:带图片的TextView,实现类似微信底部导航的UI界面。
这里写图片描述

 <LinearLayout
        android:orientation="horizontal"
        android:layout_marginBottom="3dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:drawableTop="@drawable/talk_dark"
            android:text="@string/talk"
            android:gravity="center"/>
        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:clickable="true"
            android:drawableTop="@drawable/person_dark"
            android:text="@string/person"
            android:gravity="center"/>
        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:drawableTop="@drawable/find_dark"
            android:clickable="true"
            android:text="@string/find"
            android:gravity="center"/>
        <TextView
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="wrap_content"
            android:drawableTop="@drawable/us_dark"
            android:clickable="true"
            android:text="@string/myself"
            android:gravity="center"/>
    </LinearLayout>

TextView与HTML
TextView可以设置为web类型,直接启动系统浏览器来访问网站,不过这种会显示网址,,下面,可以用文字代替网址,同样实现点击文字进入网页。

TextView可以预定义一些类似HTML的标签,通过标签,可以使TextView显示不同的字体颜色、大小、字体、图片或者链接等。只需要使用HTML中的一些标签,加上android.text.HTML类的支持。
TextView支持部分HTML标签,具体如下:

<a href="...">  //定义链接内容
<b> //定义粗体文字   b 是blod的缩写
<big> //定义大字体的文字
<blockquote> //引用块标签 
<br> //定义换行
<cite> //表示引用的URI
<dfn> //定义标签  dfn 是defining instance的缩写
<div align="...">
<em> //强调标签  em 是emphasis的缩写
<font size="..." color="..." face="...">
<h1>
<h2>
<h3>
<h4>
<h5>
<h6>
<i> //定义斜体文字
<img src="...">
<p> // 段落标签,里面可以加入文字,列表,表格等
<small> //定义小字体的文字
<strike> // 定义删除线样式的文字   不符合标准网页设计的理念,不赞成使用.   strike是strikethrough的缩写
<strong> //重点强调标签
<sub> //下标标签   sub 是subscript的缩写
<sup> //上标标签   sup 是superscript的缩写
<tt> //定义monospaced字体的文字  不赞成使用.  此标签对中文没意义  tt是teletype or monospaced text style的意思
<u> //定义带有下划线的文字  u是underlined text style的意思

如果设置setText没作用,就需要调用Html.fromHtml()方法将字符串转换为CharSequence接口,然后在进行设置。调用方法:Java setMovementMethod(LinkMovementMethod.getInstance());
Java代码如下:

public class TextViewActivity extends AppCompatActivity {
private TextView textHtml;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_text_view);
        textHtml= (TextView) findViewById(R.id.text_html);
        String s="<font color='blue'><b>百度一下,你就知道~~</b><font><br>";
         s+="<a href='https://www.baidu.com/'><b>百度</b></a>";
        textHtml.setText(Html.fromHtml(s));
        textHtml.setMovementMethod(LinkMovementMethod.getInstance());
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值