2

我有一个文本视图,它具有在 xml 文件中设置的特定文本,并且在 strings.xml 中带有下划线。现在我正在更改此文本视图形式的编辑文本中的内容,即用户输入的任何内容。到该文本在将其设置为 textview 之前,我还要附加某个字符串。我希望这个新字符串形成为带有蓝色下划线并且可点击。我尝试使用

 SpannableString phoneNum = new SpannableString(totalPhoneNum);
 phoneNum.setSpan(new UnderlineSpan(), 0, totalPhoneNum.length(), 0);   
 phoneNum.setText(totalPhoneNum);

这是行不通的!我可以在 onResume() 中使用它吗?我不知道如何将下划线的颜色更改为蓝色 :(

4

6 回答 6

3

在 TextView 中为文本添加下划线的方式有 3 种。

  1. 可跨字符串

  2. setPaintFlags(); 文本视图

  3. Html.fromHtml();

让我向您解释所有方法:

第一种方法

对于 TextView 中的文本,您必须使用SpannableString

String udata="Underlined Text";
SpannableString content = new SpannableString(udata);
content.setSpan(new UnderlineSpan(), 0, udata.length(), 0);
mTextView.setText(content);

第二种方法

您可以利用 TextView 的setPaintFlags方法为 TextView 的文本添加下划线。

例如。

mTextView.setPaintFlags(mTextView.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
mTextView.setText("This text will be underlined");

如果要穿透文本,可以参考Paint类的常量。

第三种方法

利用Html.fromHtml(htmlString);

String htmlString="<u>This text will be underlined</u>";
mTextView.setText(Html.fromHtml(htmlString));

来自:
在Android中的TextView下方绘制下划线

于 2014-05-21T11:14:13.823 回答
0

试试这个

String txt = "<u style=\"text-decoration: none; border-bottom: 1px solid #FF0000\">parragraph</u>";
phoneNum.setText(Html.fromHtml(txt));

此样式将删除默认下划线并在我们传递的颜色处放置 1 px 的边框底部。

于 2012-11-26T05:56:37.143 回答
0

用这个:

String text = "some string <u><font color=\"#00FF00\">some link</font></u>";
editText.setText(Html.fromHtml(text), TextView.BufferType.SPANNABLE);
于 2012-11-26T05:57:23.493 回答
0

xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:text="@string/hello" />
</LinearLayout>

爪哇:

public class TextDemoActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(new ViewWithRedDot(this));
    }
}

class ViewWithRedDot extends View {
    public ViewWithRedDot(Context context) {
        super(context);
    }

    @Override
    protected void onDraw(Canvas canvas) {

        Paint circlePaint = new Paint();
        Typeface mType = Typeface.create(Typeface.SANS_SERIF, Typeface.ITALIC);
        circlePaint.setTextSize(25);
        circlePaint.setColor(Color.RED);
        circlePaint.setTypeface(mType);
        canvas.drawText("Default Typeface", 50, 100, circlePaint);
        //
        circlePaint.setFlags(Paint.UNDERLINE_TEXT_FLAG);
        circlePaint.setColor(Color.YELLOW);
        canvas.drawText("Underline Text Flag", 50, 120, circlePaint);
        //
        circlePaint.setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
        circlePaint.setColor(Color.GREEN);
        canvas.drawText("Strike Thru Text Flag", 50, 140, circlePaint);
        //
        circlePaint.setFlags(Paint.ANTI_ALIAS_FLAG);
        circlePaint.setColor(Color.WHITE);
        canvas.drawText("Anti Alias Flag", 50, 160, circlePaint);
        //
        circlePaint.setFlags(Paint.DEV_KERN_TEXT_FLAG);
        circlePaint.setColor(Color.WHITE);
        canvas.drawText("Dev Kern Text Flag", 50, 180, circlePaint);
        //
        circlePaint.setFlags(Paint.FAKE_BOLD_TEXT_FLAG);
        circlePaint.setColor(Color.CYAN);
        canvas.drawText("Fake Bold Text Flag", 50, 200, circlePaint);
    }
}
于 2012-11-26T06:21:38.063 回答
0

你可以这样使用

phoneNum.setText(Html.fromHtml("W : "+"<u><FONT COLOR=\"#80776b\" >"+Your text+"</Font></u>"));

使用您想要的颜色代码。

于 2012-11-26T05:54:19.527 回答
0

在布局 xml 文件中添加以下代码:

<TextView 
    android:autoLink="phone"
    android:linksClickable="true" 
    android:textColorLink="#5e9baa" />
于 2012-11-26T07:18:06.747 回答