2017-06-07 3 views
0

Snackbarテキストの複数のHTMLフォアグラウンド書式をプログラムで追加しようとしています。私のstrings.xmlでSnackbarでの複数のHTML書式設定

私はそれらをフォーマットしようどう
<string name="html_test">The html entries %1$s and %2$s are looking different.</string> 

私は関数を呼び出す方法
public static Spanned getString(Context p_Context, int p_iResID, int p_iColor, String... p_Items) { 
    int l_iColor = ContextCompat.getColor(p_Context, p_iColor); 
    String l_HexColor = Integer.toHexString(l_iColor); 

    String l_Before = "&lt;font color=" + l_HexColor + ">"; 
    String l_After = "&lt;/font>"; 

    Object[] l_Items = new String[p_Items.length]; 
    for(int i = 0; i < p_Items.length; i++) { 
     l_Items[i] = l_Before + p_Items[i] + l_After; 
    } 

    return Html.fromHtml(p_Context.getString(p_iResID, l_Items)); 
    } 

getString(getContext(), R.string.html_test, R.color.blue, "Test1", "Test2"); 

その後、私はスナックバーを作成し、 HTML形式のテキストを渡します。

Snackbar l_SnackBar = Snackbar.make(p_Root, p_Text, p_iSnackBarLenght); 
l_SnackBar.getView().setBackgroundColor(p_iBGColor); 
return l_SnackBar; 

問題は、私はgetString()に渡された2つのエントリのないHTMLフォーマットがないことです。

![CDATA...私はフォーマットにいくつかの問題があることを読んでいるので、私は![CDATA...を使いたくありません。

答えて

0

getString()のフォアグラウンドパラメータをhtmlでフォーマットするソリューションが見つかりませんでした。今は私のために働くSpannableStringでやっています。私のコードは次のようになります:

public static SpannableString getString(Context p_Context, int p_iResID, int p_iColor, Object... p_Items) { 
    String l_Feedback = p_Context.getString(p_iResID, p_Items); 
    SpannableString l_SpannableFeedback = new SpannableString(l_Feedback); 
    int l_iItemColor = ContextCompat.getColor(p_Context, p_iColor); 

    for(Object l_Object : p_Items) { 
     String l_Item = (String) l_Object; 
     int l_iStartIndex = l_Feedback.indexOf(l_Item); 
     int l_iEndIndex = l_iStartIndex + l_Item.length(); 

     l_SpannableFeedback.setSpan(new ForegroundColorSpan(l_iItemColor), l_iStartIndex, l_iEndIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
     l_SpannableFeedback.setSpan(new StyleSpan(Typeface.BOLD), l_iStartIndex, l_iEndIndex, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); 
    } 

    return l_SpannableFeedback; 
    } 
関連する問題