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 使用Kotlin来实现加边框的文本 -> 正文阅读

[移动开发]Android 使用Kotlin来实现加边框的文本

本篇文章讲的是使用Kotlin来实现加边框的文本。
按照惯例,我们先来看看效果图
在这里插入图片描述
下面就是我们的代码实现
1、BorderTextView中重写onDraw方法

package co.per.bordertextview

import android.content.Context
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Paint
import android.util.AttributeSet
import androidx.annotation.AttrRes
import androidx.appcompat.widget.AppCompatTextView

/**
 * 实现加边框的文本
 * Created by juan on 2021/07/28.
 */
class BorderTextView : AppCompatTextView {

    constructor(context: Context) : this(context, null)

    constructor(context: Context, attr: AttributeSet?) : this(context, attr, 0)

    constructor(context: Context, attr: AttributeSet?, @AttrRes defStyleAttr: Int) : super(context, attr, defStyleAttr)

    override fun onDraw(canvas: Canvas) {
        val paint = Paint()
        paint.strokeWidth = 6f
        //  设置边框的颜色
        paint.color = Color.parseColor("#60646A")
        //  画TextView的4个边
        canvas.drawLine(0f, 0f, (width).toFloat(), 0f, paint)
        canvas.drawLine(0f, 0f, 0f, (height).toFloat(), paint)
        canvas.drawLine((width).toFloat(), 0f, (width).toFloat(), (height).toFloat(), paint)
        canvas.drawLine(0f, (height).toFloat(), (width).toFloat(), (height).toFloat(), paint)
        super.onDraw(canvas)
    }
}

2、MainActivity

package co.per.bordertextview

import android.content.res.Resources
import android.graphics.Color
import android.graphics.Typeface
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.view.Gravity
import android.view.ViewGroup
import android.widget.LinearLayout
import android.widget.TextView

class MainActivity : AppCompatActivity() {
    private lateinit var llBookNum: LinearLayout
    private lateinit var llBookUserNum: LinearLayout
    private lateinit var llBookKm: LinearLayout

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        llBookNum = findViewById(R.id.ll_book_num)
        llBookUserNum = findViewById(R.id.ll_book_user_num)
        llBookKm = findViewById(R.id.ll_book_km)

        // 这是我的第X本书
        show(llBookNum, "199")
        // 阅读了X次
        show(llBookUserNum, "33")
        // 陪伴了我X年
        show(llBookKm, "5")
    }

    private fun show(linearLayout: LinearLayout, numTxt: String) {
        for (element in numTxt) {
            val txt = element.toString()
            val params = LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)
            var textView: TextView
            if ("." == txt) {
                textView = TextView(this)
            } else {
                textView = BorderTextView(this)
                textView.setPadding(10, 2, 10, 2)
                params.leftMargin = dpToPx(2f)
                params.rightMargin = dpToPx(2f)
            }
            textView.gravity = Gravity.CENTER
            textView.setTextColor(Color.parseColor("#60646A"))
            textView.textSize = 16f
            textView.text = txt
            textView.typeface = Typeface.DEFAULT_BOLD
            linearLayout.addView(textView, params)
        }
    }

    companion object {
        /**
         * dp转换为px
         */
        fun dpToPx(dp: Float): Int {
            return (dp * Resources.getSystem().displayMetrics.density + 0.5f).toInt()
        }
    }
}

3、布局文件

<?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:paddingTop="48dp"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="22dp"
        android:gravity="center|bottom"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/tv_book_tip"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="这是我的第"
            android:textColor="#18191D"
            android:textSize="14dp" />

        <LinearLayout
            android:id="@+id/ll_book_num"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal" />

        <TextView
            android:id="@+id/tv_book_unit"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="本书"
            android:textColor="#18191D"
            android:textSize="14dp" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/ll_book_used_num"
        android:layout_width="match_parent"
        android:layout_height="22dp"
        android:layout_marginTop="7dp"
        android:gravity="center|bottom"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="阅读了"
            android:textColor="#18191D"
            android:textSize="14dp" />

        <LinearLayout
            android:id="@+id/ll_book_user_num"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="次"
            android:textColor="#18191D"
            android:textSize="14dp" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/ll_book_used_km"
        android:layout_width="match_parent"
        android:layout_height="22dp"
        android:layout_marginTop="7dp"
        android:gravity="center|bottom"
        android:orientation="horizontal">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="陪伴了我"
            android:textColor="#18191D"
            android:textSize="14dp" />

        <LinearLayout
            android:id="@+id/ll_book_km"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="年"
            android:textColor="#18191D"
            android:textSize="14dp" />
    </LinearLayout>

</LinearLayout>

源码下载

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-07-29 11:46:00  更:2021-07-29 11:46:28 
 
开发: 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年5日历 -2024/5/2 17:13:12-

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