我想将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 ) );
答案 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>