如何将最后一个附加值集中在textview / scrollview中

时间:2012-03-23 06:45:36

标签: java android

我尝试将最后一个追加值的焦点放在文本框中。但不幸的是我无法提起它。能帮我解决这个问题。

<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="115dp"
android:orientation="vertical" >
<ScrollView android:id="@+id/ScrollView01"
    android:layout_width="fill_parent"
    android:layout_height="165dp"
    android:background="#FFFFFF" >

    <TextView
        android:id="@+id/tvHistory"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#FFFFFF"
        android:gravity="right"
        android:focusable="true"
        android:text=""
        android:textColor="#000000" />
</ScrollView>

滚动视图和追加功能正常。但我想用颜色

来聚焦最后一个追加值
tvHistory.append(tvInput.getText()+"\n");

2 个答案:

答案 0 :(得分:0)

只使用一个TextView就无法做到这一点,因为单个TextView不能有多种颜色。

您可以考虑执行以下操作:

<ScrollView android:id="@+id/ScrollView01"
    android:layout_width="fill_parent"
    android:layout_height="165dp"
    android:background="#FFFFFF" >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"  >
        <TextView
            android:id="@+id/tvHistory"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textColor="#000000" />          
        <TextView
            android:id="@+id/tvHighlight"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:textColor="some_other_color" />
    </LinearLayout>
</ScrollView>

现在,每次要添加新值时,都会执行以下操作:

tvHistory.append(tvHighlight.getText().toString());
tvHighlight.setText(value);

答案 1 :(得分:0)

在Android中,您可以使用Spannable设置TextView的部分样式。http://developer.android.com/resources/faq/commontasks.html#selectingtext

int len = tvHistory.getText().length();
tvHistory.setText(tvHistory.getText() + tvInput.getText()+"\n", TextView.BufferType.SPANNABLE);
Spannable str = tvHistory.getText();

// Create our span sections, and assign a format to each.
str.setSpan(new BackgroundColorSpan(0xFFFFFF00), len, str.length() - 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);