我正在创建一种类似终端的视图,它将通过蓝牙显示接收和传输的消息,例如。收到蓝色信息,红色传输。
到目前为止,我设法将textView放在scrollView中,并使用.append()方法添加行来滚动视图。
布局如下所示:
<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 = (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
非常感谢!
答案 0 :(得分: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));
}