📌  相关文章
📜  更改 Android 中字符串内特定范围字符的样式

📅  最后修改于: 2022-05-13 01:54:24.630000             🧑  作者: Mango

更改 Android 中字符串内特定范围字符的样式

Android 中的 TextView 用于显示文本或字符序列,通常称为字符串。这些字符串可以是硬编码的,也可以是在运行时声明的。通常,文本以原始格式显示,其中将相同的文本格式应用于字符串存在的每个字符。如果我们希望应用样式,则将格式应用于整个字符串。没有直接规定将不同的样式应用于不同的字符。

因此,在本文中,我们将向您展示如何在 Android 中以编程方式将样式应用于子字符串或字符串跨度。

分步实施

第 1 步:在 Android Studio 中创建一个新项目

要在 Android Studio 中创建新项目,请参阅如何在 Android Studio 中创建/启动新项目。我们在Kotlin 中演示了该应用程序,因此请确保在创建新项目时选择 Kotlin 作为主要语言。



步骤 2:使用 activity_main.xml 文件

导航到app > res > layout > activity_main.xml并将以下代码添加到该文件中。下面是activity_main.xml文件的代码。在布局文件中添加一个 TextView。这个 TextView 将显示我们的格式化文本。

XML


  
    
  


Kotlin
import android.graphics.Typeface
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.text.SpannableString
import android.text.Spanned
import android.text.style.StyleSpan
import android.widget.TextView
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // Declaring TextView from the layout file
        val mTextView = findViewById(R.id.text_view)
          
        // Declaring a string
        val mString = "GeeksforGeeks is a Computer Science portal for Geeks"
        
        // Getting a spannable string from the previous string
        val mSpannableString = SpannableString(mString)
          
        // Declaring Style Spans of different types
        val mBoldSpan = StyleSpan(Typeface.BOLD)
        val mItalicSpan = StyleSpan(Typeface.ITALIC)
        val mBoldItalicSpan = StyleSpan(Typeface.BOLD_ITALIC)
  
        // Applying style spans to the spannable string
        mSpannableString.setSpan(mBoldSpan, 0, 13, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
        mSpannableString.setSpan(mItalicSpan, 19, 35, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
        mSpannableString.setSpan(mBoldItalicSpan, 47, 52, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
  
        // Displaying the formatted 
        // spannable string in the TextView
        mTextView.text = mSpannableString
    }
}


步骤 3:使用MainActivity.kt 文件

转到MainActivity.kt文件并参考以下代码。下面是MainActivity.kt文件的代码。代码中添加了注释以更详细地理解代码。

科特林

import android.graphics.Typeface
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.text.SpannableString
import android.text.Spanned
import android.text.style.StyleSpan
import android.widget.TextView
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // Declaring TextView from the layout file
        val mTextView = findViewById(R.id.text_view)
          
        // Declaring a string
        val mString = "GeeksforGeeks is a Computer Science portal for Geeks"
        
        // Getting a spannable string from the previous string
        val mSpannableString = SpannableString(mString)
          
        // Declaring Style Spans of different types
        val mBoldSpan = StyleSpan(Typeface.BOLD)
        val mItalicSpan = StyleSpan(Typeface.ITALIC)
        val mBoldItalicSpan = StyleSpan(Typeface.BOLD_ITALIC)
  
        // Applying style spans to the spannable string
        mSpannableString.setSpan(mBoldSpan, 0, 13, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
        mSpannableString.setSpan(mItalicSpan, 19, 35, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
        mSpannableString.setSpan(mBoldItalicSpan, 47, 52, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
  
        // Displaying the formatted 
        // spannable string in the TextView
        mTextView.text = mSpannableString
    }
}

输出:

您可以看到字符串已被格式化为不同的跨度。

想要一个更快节奏和更具竞争力的环境来学习 Android 的基础知识吗?
单击此处前往由我们的专家精心策划的指南,旨在让您立即做好行业准备!