How to convert part of a string to italics?

后端 未结 3 1926
一个人的身影
一个人的身影 2021-01-22 11:44

I want to make animal.getScientificName as Italics(code below). I\'m using a List View and setting the text in the listview. I wan\'t only part of the Text view to

相关标签:
3条回答
  • 2021-01-22 11:57

    I would recommend using two TextViews, because it is impossible to have two different text-styles in one TextView.

    Just place them both under each other, and assign the correct String value to the TextView.

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

    And for example, you can use this layout in your ListView item:

    <?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>
    
    0 讨论(0)
  • 2021-01-22 12:08

    You can accomplish this using spans on your text (to expand here on the correct answer in comment by Georgian Benatos).

    Here is a related question, and the answers show you exactly how to do this:

    • Custom sized italic Font using Spannable

    Specifically some sample code in the 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 are a very useful feature - they can be used for various common text styles:

    • italics
    • bold
    • underline
    • bullets

    To have a look at the wide range of spans available, take a look at the Android developers page for the android.text.style package:

    • android.text.style | Android Developers
    0 讨论(0)
  • 2021-01-22 12:15

    use 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 ) ));
    

    for more info, refer this

    0 讨论(0)
提交回复
热议问题