ScrollView中的Android TextView - 每个新行

时间:2016-12-07 21:22:57

标签: android text colors terminal scrollview

我正在创建一种类似终端的视图,它将通过蓝牙显示接收和传输的消息,例如。收到蓝色信息,红色传输。

到目前为止,我设法将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

非常感谢!

1 个答案:

答案 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));
}