Android TextView文本背景颜色

时间:2013-03-23 03:08:16

标签: android user-interface

如何使用Android TextView实现此类效果。它看起来像选择的文本,我在API中找不到类似的东西。

这不是视图的背景颜色,而是仅适用于文本的背景颜色。你可以看到它在换行符时是如何停止的,文本行之间有一条细白线。

Screenshot

8 个答案:

答案 0 :(得分:14)

<TextView
android:background="#0000FF"
android:textColor="#FFFFFF" />

定义一个带有蓝色背景的TextView和白色文字......是您需要的吗?

答案 1 :(得分:4)

据我所知,没有覆盖TextView并在包含间隙颜色的视图上绘制自定义颜料,没有“好”的方法。

即使设置lineSpacingExtra属性也只会扩展背景颜色。

您还可以考虑创建自定义spannable并将其用作

Spannable str = new SpannableStringBuilder("How can I achieve such an effect with an Android TextView. It looks somehow like selected text and I couldn't find something similar in the API.");
str.setSpan(new NewSpannableClass(), 0, str.length() - 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
((TextView)findViewById(R.id.text)).setText(str);

NewSpannableClass是自定义范围。

看到很多人都懒得查看如何制作自定义跨越式,这是一个例子

public class CustomSpannable extends ClickableSpan
{
    @Override public void updateDrawState(TextPaint ds)
    {
        super.updateDrawState(ds);
        ds.setUnderlineText(true);
    }
}

此示例将为文本加下划线。使用TextPaint更改跨区文本的外观。

答案 2 :(得分:4)

我相信有更简单,更好的方法来实现这一目标:只需创建一个backgroundColorSpan并将其添加到SpannableString即可。这些方面的东西:

public static SpannableString buildBackgroundColorSpan(SpannableString spannableString,
                                                String text, String searchString, int color) {

    int indexOf = text.toUpperCase().indexOf(searchString.toUpperCase());

    try {
        spannableString.setSpan(new BackgroundColorSpan(color), indexOf,
                (indexOf + searchString.length()), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    } catch (Exception e) {

    }


    return spannableString;
}

其中“spannableString”是创建并假设用“text”初始化的SpannableString对象; “searchString”表示您希望在TextView中“突出显示”的文本,并“颜色”应设置“突出显示”文本的背景颜色。

String text = "The Quick Brown Fox Jumps over the Lazy Dog";
String searchString = "brown";
int color = Color.parseColor("#FFF5F19E");

SpannableString spannableString = new SpannableString(text);
spannableString = StringUtils.buildBackgroundColorSpan(spannableString, text, searchString, color);

我认为这应该足够了。

由于

答案 3 :(得分:1)

使用此示例

 <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#0000FF"
    android:textColor="#FFFFFF" />

用于挑选颜色使用此链接 http://html-color-codes.info/

  

红色:#750A0A

     

蓝:#002BFF

     

绿色:#33FF00

     

白:#FFFFFF

     

黑色:#000000

答案 4 :(得分:1)

如果你想从XML中做到这一点,请试试其他刚回答的人的解决方案:

 <TextView
            android:id="@+id/TextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textColor="#ffffff"
            android:background="#1bgtbgt"/>

如果您想从活动代码中执行此操作,您可以像尝试使用以下命令动态更改它:

text.setBackgroundColor( int color);

答案 5 :(得分:0)

textview文件中的.xml下方试试:

<TextView android:background="#0000FF">

答案 6 :(得分:-1)

尝试将此用作文本背景颜色

 <TextView
            android:id="@+id/comment_dis"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="Stack Overflow
            android:textColor="#ffffff"
            android:background="#3cabdc"/>

答案 7 :(得分:-1)

您可以在TextView周围添加另一个布局,并将其背景设置为您想要的颜色

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#000000" >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textColor="#FFFFFF"
        android:text="@string/text" />

</LinearLayout>