将样式应用于textview中的特定字符

时间:2011-01-15 06:49:42

标签: android

目前我正在使用26 Textview,以便我可以根据运行时情况将样式应用于特定字符。 但是如果我能够在textview中对特定字符应用样式,我只能使用一个textview来实现我的目标。

e.g。 如果我想在下面的代码中使字符'M'变红。是否有可能实现这一目标?

    <TextView 
    android:id="@+id/TextView01" 
    android:layout_height="wrap_content" 
    android:textSize="20dip" 
    android:textStyle="bold"
    android:layout_width="15dip" 
    android:text="ABCDEFGHIJKLMNOPQRSTUVWXYZ" 
    android:background="#FFFFFF" 
   android:textColor="#000000"/>`

或者任何人都有比使用26 TextView更好的选择,它也欢迎。

3 个答案:

答案 0 :(得分:1)

试试这段代码。它会帮助你..

RelativeLayout rl=(RelativeLayout) findViewById(R.id.rl);
RelativeLayout.LayoutParams params=new RelativeLayout.LayoutParams((int)LayoutParams.WRAP_CONTENT,(int)LayoutParams.WRAP_CONTENT);
params.leftMargin=45;
params.topMargin=70;
TextView textView=new TextView(this);
String text = "I Love <font color='red'>ANDROID !!!</font>";
textView.setText(Html.fromHtml(text));
textView.setLayoutParams(params);
textView.setTextSize(25);
rl.addView(textView);

答案 1 :(得分:1)

使用Spannable

private SpannableString spanIt(String text, String queryText) {
    // search for query on text
    int startIndex = text.indexOf(queryText);
    int endIndex = startIndex + queryText.length();
    // spannable to show the search query
    SpannableString spanText = new SpannableString(text);
    if (startIndex > -1) {  
        spanText.setSpan(new ForegroundColorSpan(Color.RED), startIndex,
                endIndex, 0);
    }
    return spanText;
}

然后是textview ..

tv.settext(spanIt("ABCDEFGHIJLMNOPQRSTUVXZ","M"));

答案 2 :(得分:0)

您只能使用1个textview并通过Html.fromHtml()

更改颜色