1

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

4

4 回答 4

7

要更改背景的一部分,您需要的是 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 答案

于 2015-12-07T22:16:37.407 回答
1

您必须使用 Spannable 或必须使用 Html。这两个都会起作用。

html示例:

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

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

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

于 2013-09-20T08:46:55.367 回答
0

以一种简单的方式,您可以像这样使用 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>

另见快照在此处输入图像描述

于 2013-09-20T08:54:30.230 回答
-1

像这样改变背景

自定义形状.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 重叠,则在自定义布局上添加填充。

于 2013-09-20T10:04:29.810 回答