如何将字符串的一部分转换为斜体?

时间:2014-09-15 15:20:34

标签: android

我想将animal.getScientificName设为斜体(下面的代码)。我正在使用列表视图并在列表视图中设置文本。我不只是文本视图的一部分是斜体字,无论如何我能做到这一点。 我已附上以下部分代码, 谢谢你的帮助。

String[] listNames;

listNames[ i ] = animal.getName().toUpperCase().replaceAll( "_" , " " ) + " \n\n" + "+animal.getScientificName()+"; 


array_sort = new ArrayList( Arrays.asList( listNames) ); 
tv.setText( array_sort.get( position ) );

3 个答案:

答案 0 :(得分:2)

使用Html.fromHtml

listNames[ i ] = animal.getName().toUpperCase().replaceAll( "_" , " " ) + " \n\n" + "<em>+animal.getScientificName()+</em>"; 


array_sort = new ArrayList( Arrays.asList( listNames) ); 
tv.setText(Html.fromHtml(array_sort.get( position ) ));

有关详细信息,请参阅this

答案 1 :(得分:2)

您可以使用文字的跨度来完成此操作(在此处展开​​格鲁吉亚贝纳托斯在评论中的正确答案)。

以下是相关问题,答案将向您展示如何执行此操作:

特别是answer provided by Raghunandan

中的一些示例代码
String title="My Custom Text!";  
TextView tv = (TextView) findViewById(R.id.some_id);
SpannableString ss1=  new SpannableString(title);
ss1.setSpan(new StyleSpan(Typeface.ITALIC), 0, ss1.length(), 0);
ss1.setSpan(new RelativeSizeSpan(2f), 0, ss1.length, 0); 
tv.setText(ss1);

Spans是一个非常有用的功能 - 它们可以用于各种常见的文本样式:

  • 斜体
  • 粗体
  • 下划线
  • 子弹

要查看可用的各种跨度,请查看android.text.style包的Android开发者页面:

答案 2 :(得分:0)

我建议使用两个TextView,因为在一个TextView中不可能有两种不同的文本样式。

只需将它们放在彼此之下,并将正确的String值分配给TextView。

tv1.setText(animal.getName().toUpperCase().replaceAll( "_" , " " );
tv2.setText(animal.getScientificName();

例如,您可以在ListView项目中使用此布局:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/tv1" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/tv2"
        android:textStyle="italic" />

</LinearLayout>