2016-12-07 15 views
1

私は、Bluetooth経由で送受信されたメッセージを表示するような端末のような表示を作成しています。受信したメッセージは青で、赤で送信されます。ScrollViewのAndroid TextView - 新しい行ごとに異なる色

これまでのところ、scrollView内にtextViewを配置し、.append()methdodを使用してスクロール表示に行を追加しました。

レイアウトは次のようになります。scrollViewにテキストを追加するための

<ScrollView 
    android:id="@+id/scrollingView" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_below="@+id/disconnectButton" 
    android:layout_alignParentStart="true"> 

    <TextView 
     android:text="Received and sent txt!!!\n" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/scrollTextView" 
     android:minLines="11" 
     android:maxLines="11"/> 
</ScrollView> 

とコード:

scrollView = (ScrollView) findViewById(R.id.scrollingView); 
scrollTextView = (TextView) findViewById(R.id.scrollTextView); 
scrollTextView.setGravity(Gravity.BOTTOM); scrollTextView.setTextColor(getResources().getColor(R.color.receivedBTColor)); 
scrollTextView.append("$"+dataInPrint+"\n"); 
scrollView.fullScroll(View.FOCUS_DOWN); 

問題はラインのそれぞれが異なる色にすることができなければならないということです。 setTextColor()メソッドは、textView全体の色を設定します。これは、scrollViewがオーバーフローするまで上方向に移動する行を一時的に保存する必要があるためです。私はSpannableクラスの使用例を見ましたが、かなり面倒です。

誰でもスクロール可能なカラフルなテキストを作成する方法を提案できますか?このようなもの? Example from Bluetooth terminal app

ありがとうございます!私はHtml.fromHtml()を使用する場合

答えて

0

あなたがHTMLとAndroidのHtml.fromHtml()を活用少しトリッキーな編集を行うことができます...

String dataInPrint = "" //Whatever the output message is. 

String redB = "<font color="red">"; 
String blueB = "<font color="blue">"; 
String colorEnd = "</font>"; 

if(//message is send){ 
    yourtextview.append(Html.fromHtml(redB + dataInPrint + colorEnd)); 
} 
else{//message is recieve 
    yourtextview.append(Html.fromHtml(blueB + dataInPrint + colorEnd)); 
} 
+0

もう一つは...、この方法は除外するようだ「\ n」はシンボル。私は何をしたのですか、私は基本的にはscrollTextView.append( "\ n");次の行に。これはうまくいきますが、同じHtml.fromHtml()メソッドを使って改行記号を使用する別の方法がありますか?そうでなければ、巨大な感謝!!! – Niklavs

+0

素晴らしい!それは良い知っているちょっとトリック、あなたは少しのHTMLが 'TextView'で必要な時を知らない – Illdapt

+0

はい、HTMLの'
'タグを利用できるはずです。文字列colorEnd = "
"を追加するだけで試してみてください。 – Illdapt

関連する問題