使用 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-First !谷歌正式宣布 Kotlin 成为 Android 开发首选编程语言!
Kotlin 语言入门宝典 | Android 开发者 FAQ Vol.5