IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android(十):TextView 文本框 -> 正文阅读

[移动开发]Android(十):TextView 文本框

渐变按钮

在这里插入图片描述

<!-- 样式 Resources/drawable/txt_bg.xml -->
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <!--边框-->
    <stroke
        android:width="1dp"
        android:color="#ff25c88a" />
    <!--圆角-->
    <corners android:radius="30dp" />
    <!--边距-->
    <padding
        android:bottom="15dp"
        android:top="15dp"
        android:left="120dp"
        android:right="120dp" />
    <!--渐变色-->
    <gradient
        android:type="linear"
        android:useLevel="true"
        android:startColor="#ff24c7af"
        android:endColor="#ff25c88a"
        android:angle="180" />
</shape>

<!-- 布局 -->
<TextView
        android:id="@+id/txt01"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:layout_margin="10dp"
        android:background="@drawable/txt_bg"
        android:textColor="#ffffff"
        android:textSize="15sp"
        android:text="渐变按钮" />

带图片的Text

在这里插入图片描述

<TextView
        android:id="@+id/txt02"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/txt01"
        android:layout_margin="10dp"
        android:drawableLeft="@drawable/mini_logo"
        android:drawablePadding="10dp"
        android:textSize="40sp"
        android:text="带图片的Text" />
  • 修改图片大小
    // 修改图片尺寸
    {
       var txt02 = (TextView)FindViewById(Resource.Id.txt02);
       // 数组下表0~3,依次是:左上右下
       var drawables = txt02?.GetCompoundDrawables();
       if (drawables == null) return;
       // 调用setBounds设置左上右下坐标点,如这里设置了代表的是:
       // 长(left-right):从文字最左边开始0dp处到60dp处
       // 宽(top-bottom):从文字上方0dp处往上延伸60dp处
       drawables[0].SetBounds(0, 0, 60, 60);
       txt02.SetCompoundDrawables(drawables[0], drawables[1], drawables[2], drawables[3]);
    }
    

可进行跳转的Text

<TextView
        android:id="@+id/txt03"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/txt02"
        android:layout_margin="10dp"
        android:textSize="15sp"
        android:text="www.baidu.com"
        android:autoLink="web" />

嵌入HTML

在这里插入图片描述

 <TextView
        android:id="@+id/txt04"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/txt03"
        android:layout_margin="10dp"
        android:textSize="15sp"
        android:text="嵌入HTML->" />
// 嵌入HTML
{
    var txt04 = (TextView)FindViewById(Resource.Id.txt04);
    var str = "<font color='blue'><b>百度一下,你就知道~:</font>";
    str += "<a href = 'http://www.baidu.com'>百度</a>";
    txt04?.SetText(Html.FromHtml(txt04.Text + str), TextView.BufferType.Normal);
    if (txt04 != null) txt04.MovementMethod = LinkMovementMethod.Instance; // 可点击
}

多样式文本

在这里插入图片描述

 <TextView
        android:id="@+id/txt05"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/txt04"
        android:layout_margin="10dp"
        android:textSize="15sp"
        android:text="这是一段文本" />
// 文本样式
{
    var txt05 = (TextView)FindViewById(Resource.Id.txt05);
    var span = new SpannableString("红色打电话斜体删除线绿色下划线图片:.");
    // 1.设置背景色,SetSpan时需要指定的flag,SpanTypes.ExclusiveExclusive(前后都不包括)
    span.SetSpan(new BackgroundColorSpan(Color.Red), 0, 2, SpanTypes.ExclusiveExclusive);
    // 2.用超链接标记文本
    span.SetSpan(new URLSpan("tel:4155551212"), 2, 5, SpanTypes.ExclusiveExclusive);
    // 3.用样式标记文本(斜体)
    span.SetSpan(new StyleSpan(TypefaceStyle.BoldItalic), 5, 7, SpanTypes.ExclusiveExclusive);
    // 4.用删除线标记文本
    span.SetSpan(new StrikethroughSpan(), 7, 10, SpanTypes.ExclusiveExclusive);
    // 5.用下划线标记文本
    span.SetSpan(new UnderlineSpan(), 10, 16, SpanTypes.ExclusiveExclusive);
    // 6.用颜色标记
    span.SetSpan(new ForegroundColorSpan(Color.Green), 10, 13, SpanTypes.ExclusiveExclusive);
    // 7.获取Drawable资源
    var d = Resources?.GetDrawable(Resource.Drawable.mini_logo);
    d?.SetBounds(0, 0, d.IntrinsicWidth, d.IntrinsicHeight);
    // 8.创建ImageSpan,然后用ImageSpan来替换文本
    var imgSpan = new ImageSpan(d, SpanAlign.Baseline);
    span.SetSpan(imgSpan, 18, 19, SpanTypes.ExclusiveExclusive);
    txt05?.SetText(span, TextView.BufferType.Normal);
    if (txt05 != null) txt05.MovementMethod = LinkMovementMethod.Instance; // 可点击
}

仿朋友圈点赞名单

在这里插入图片描述

<TextView
        android:id="@+id/txt06"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/txt05"
        android:layout_margin="10dp"
        android:textSize="15sp"
        android:text="这是一段文本" />
// 文本可点击
{
    var txt06 = (TextView)FindViewById(Resource.Id.txt06);
    var friends = new[]
    {
        new Friend("Lee", "123-Lee-123"),
        new Friend("Prosper", "1234567-Prosper-1234567"),
        new Friend("ProsperLee", "1234567890-PLee-1234567890"),
    };
    txt06?.SetText(PartClick(friends), TextView.BufferType.Normal);
    if (txt06 != null) txt06.MovementMethod = LinkMovementMethod.Instance; // 可点击
}

// 单个朋友类(存放朋友信息)
private class Friend
{
    public string _name;
    public string _id;

    public Friend(string name, string id)
    {
        _name = name;
        _id = id;
    }
}

// 文本拼接及局部点击事件
private static SpannableStringBuilder PartClick(Friend[] friends)
{
    var ssb = new SpannableStringBuilder();
    foreach (var friend in friends)
    {
        ssb.Append(friend._name + ',');
        var start = ssb.Length() - friend._name.Length - 1;
        var end = ssb.Length() - 1;
        ssb.SetSpan(new TextClick(friend), start, end, SpanTypes.ExclusiveExclusive);
    }

    ssb.Delete(ssb.Length() - 1, ssb.Length());
    return ssb.Append($"等{friends.Length}人觉得很赞!") as SpannableStringBuilder;
}

// 文本点击
private class TextClick : ClickableSpan
{
    private readonly Friend _friend;

    public TextClick(Friend friend)
    {
        _friend = friend;
    }

    public override void OnClick(View widget)
    {
        Toast.MakeText(Application.Context, _friend._id, ToastLength.Long)?.Show();
    }

    public override void UpdateDrawState(TextPaint ds)
    {
        base.UpdateDrawState(ds);
        ds.Color = Color.Blue;
        ds.UnderlineText = true;
    }
}

跑马灯

在这里插入图片描述

  • 方案1:
    <TextView
            android:id="@+id/txt07"
            android:layout_width="300dp"
            android:layout_height="wrap_content"
            android:layout_below="@id/txt06"
            android:layout_centerHorizontal="true"
            android:layout_margin="10dp"
            android:background="#EEEFFF"
            android:padding="5dp"
            android:text="你整天说着日了狗日了狗,但是你却没有来,呵呵呵呵呵呵呵呵呵呵~"
            
            android:ellipsize="marquee"
            android:singleLine="true"/>
    
    // 跑马灯
    {
        var txt07 = (TextView)FindViewById(Resource.Id.txt07);
        if (txt07 == null) return;
        txt07.Selected = true;
    }
    
  • 方案2(需要点击一下文本):
    <TextView
            android:id="@+id/txt07"
            android:layout_width="300dp"
            android:layout_height="wrap_content"
            android:layout_below="@id/txt06"
            android:layout_centerHorizontal="true"
            android:layout_margin="10dp"
            android:background="#EEEFFF"
            android:padding="5dp"
            android:text="你整天说着日了狗日了狗,但是你却没有来,呵呵呵呵呵呵呵呵呵呵~"
            
            android:textIsSelectable="true"
            android:ellipsize="marquee"
            android:singleLine="true"/>
    

行间距

在这里插入图片描述

<TextView
        android:id="@+id/txt08"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/txt07"
        android:layout_centerHorizontal="true"
        android:layout_margin="10dp"
        android:background="#EEEFFF"
        android:padding="5dp"
        android:lineSpacingExtra="10dp"
        android:lineSpacingMultiplier="2"
        android:text="你整天说着日了狗日了狗,但是你却没有来,呵呵呵呵呵呵呵呵呵呵~你整天说着日了狗日了狗,但是你却没有来,呵呵呵呵呵呵呵呵呵呵~你整天说着日了狗日了狗,但是你却没有来,呵呵呵呵呵呵呵呵呵呵~" />

属性总结

属性描述
layout_width宽度
layout_height高度
gravity对齐方式
text文本内容
textColor文本颜色
textStyle文本样式(粗体斜体等)
background背景
textSize字号
shadowColor设置阴影颜色,需要与shadowRadius一起使用哦
shadowRadius设置阴影的模糊程度,设为0.1就变成字体颜色了,建议使用3.0
shadowDx设置阴影在水平方向的偏移,就是水平方向阴影开始的横坐标位置
shadowDy设置阴影在竖直方向的偏移,就是竖直方向阴影开始的纵坐标位置
drawableLeft带图片的文本
drawablePadding图片距离文字的padding
autoLink识别链接等属性
textIsSelectable是否可对文本进行选择
lineSpacingExtra行间距
lineSpacingMultiplier行间距(倍数)
singleLine是否换行
ellipsizestart 省略号显示在开头
ellipsizeend 省略号显示在结尾
ellipsizemiddle 省略号显示在中间
ellipsizemarquee 以横向滚动方式显示(需获得当前焦点时)
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-09-18 10:17:43  更:2021-09-18 10:19:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:22:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码