使用 Kotlin 语言在 Android Studio 中为文本设置渐变颜色

Posted

技术标签:

【中文标题】使用 Kotlin 语言在 Android Studio 中为文本设置渐变颜色【英文标题】:Set gradient color for text in Android Studio with Kotlin language 【发布时间】:2020-06-23 03:49:10 【问题描述】:

我有一个文本,我想设置一个渐变颜色作为它的前景。我可以用 XML 做吗?

或者我应该在活动中这样做吗?我正在 android Studio 中使用 Kotlin 进行编程。

文件activity_main.xml

<androidx.constraintlayout.widget.ConstraintLayout xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <TextView
        android:layout_
        android:layout_
        android:background="#FFFFFF"
        android:gravity="center"
        android:text="Text Color is Gradient"
        android:textColor="#000"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

文件梯度.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
    <gradient
        android:angle="90"
        android:centerColor="#555994"
        android:endColor="#b5b6d2"
        android:startColor="#555994"
        android:type="linear" />

    <corners
        android:radius="0dp"/>

</shape>

我的活动是这样的:

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity


class MainActivity : AppCompatActivity() 

    override fun onCreate(savedInstanceState: Bundle?) 
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

    

【问题讨论】:

在 xml 中,将背景设置为 textview.. 将 android:background="#FFFFFF" 替换为 android:background="@drawable/gradient" 它不起作用@Raza,它对你有用吗? 是的,我已经测试过了,它的工作原理..尝试更改渐变可绘制文件的名称。 请附上你的完整代码作为答案,我会试试那个代码。 【参考方案1】:

为了将渐变设置为Textview 文本颜色,您必须使用textshader 解析渐变颜色。您可以根据需要自定义颜色。

 val paint = textView.paint
        val width = paint.measureText(textView.text.toString())
        val textShader: Shader = LinearGradient(0f, 0f, width, textView.textSize, intArrayOf(
            Color.parseColor("#F97C3C"),
            Color.parseColor("#FDB54E"),
            /*Color.parseColor("#64B678"),
            Color.parseColor("#478AEA"),*/
            Color.parseColor("#8446CC")
        ), null, Shader.TileMode.REPEAT)

        textView.paint.setShader(textShader)

【讨论】:

谢谢@Raza,但是这段代码会使我的 textview 渐变背景,而我希望我的文本是渐变的。换句话说,现在我的文字是黑色的,我想让它渐变。 这是你想要的吗? 就是这样。非常感谢。 此代码不适用于小文本。例如,试试这个文本的代码:“Moein”@Raza 你想修改你的代码来处理小字符串吗?@Raza

以上是关于使用 Kotlin 语言在 Android Studio 中为文本设置渐变颜色的主要内容,如果未能解决你的问题,请参考以下文章

使用Kotlin开发Android应用

使用Kotlin开发Android应用

Kotlin-First !谷歌正式宣布 Kotlin 成为 Android 开发首选编程语言!

Kotlin 语言入门宝典 | Android 开发者 FAQ Vol.5

使用 Kotlin 语言在 Android Studio 中为文本设置渐变颜色

连载 | 使用Kotlin开发Android