更改textview部分的背景颜色

时间:2013-09-20 08:34:11

标签: android textview

我有三行文字视图,例如姓名,电话和地址。我想区分第三行,我想在那里添加图像,为它获得一个圆形边框并更改背景颜色。我有办法吗?

4 个答案:

答案 0 :(得分:6)

要更改背景的一部分,您需要的是Spannable。

int startColor = 0; //the size that start the background color
int endColor = 100; //the size that ends the background color

TextView textView = (TextView) findViewById(R.id.text_view_id);

Spannable spannable = new SpannableString(" Handle action bar item clicks here. The action bar will automatically handle clicks on the Home");

spannable.setSpan(new BackgroundColorSpan(Color.BLUE), startColor, endColor, 
                  Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

如果您想点击它,可以使用:

spannable.setSpan(new ClickableSpan() {
        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this, "link clicked", Toast.LENGTH_SHORT).show();
        }
    }, startColor, endColor, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

字体StackOverflow answer

答案 1 :(得分:1)

您必须使用Spannable或必须使用Html。这两者都有效。

Html示例:

YOURTEXTVIEW.setText(Html.fromHtml("<font color='green'><b>" + YOUR BACKGROUND TEXT + "</b></font>" + "  "+ YOUR LONG LONG TEXT));

您必须为设置背景编写Html。

对于spannable,您将从Google获得大量数据。

答案 2 :(得分:1)

以简单的方式,您可以使用3个像这样的文本视图

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Details" />

    <LinearLayout
        android:layout_marginLeft="15dp"
        android:orientation="vertical"
         android:layout_width="wrap_content"
        android:layout_height="wrap_content" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Name" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Phone" />

        <TextView
            android:background="#f00"
            android:textColor="#ffffff"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Address" />
    </LinearLayout>

</LinearLayout>

另见快照enter image description here

答案 3 :(得分:0)

像这样改变背景

customshape.xml

  <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android" >

      <solid android:color="your_back_ground_color" />  

        <corners android:radius="8dp" />

        <stroke
            android:width="0.5dp"
            android:color="Border_color" >
        </stroke>

    </shape>

把它放在res / drawable

中 布局xml中的

  <TextView
        android:background="@drawable/customshape"
        android:textColor="your_color"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="your_text" />

我希望如果它与textview重叠在自定义布局上添加填充。