在android中为动态生成的TextView加下划线

时间:2012-11-26 05:43:24

标签: android textview

我有一个文本视图,它有一个在xml文件中设置的文本,在strings.xml中有下划线。现在我正在改变这个textview形式的edittext中的内容,即用户输入的内容。在将该文本设置为textview之前,我还附加了一些字符串。我希望这个新的字符串形成为带有蓝色和可点击的下划线。我尝试使用

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

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

6 个答案:

答案 0 :(得分:3)

  

TextView中有三种方法可以支持文本。

     
      
  1. SpannableString

  2.   
  3. TextView的setPaintFlags();

  4.   
  5. Html.fromHtml();

  6.         

    让我向您解释所有方法:

         

    第一种方法

         

    对于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类的常量。

         

    第3种方法

         

    利用Html.fromHtml(htmlString);

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

自:
To draw an Underline below the TextView in Android

答案 1 :(得分:0)

你可以这样使用

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

使用您想要的颜色代码。

答案 2 :(得分:0)

试试这个

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

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

答案 3 :(得分:0)

使用此:

String text = "some string <u><font color=\"#00FF00\">some link</font></u>";
editText.setText(Html.fromHtml(text), TextView.BufferType.SPANNABLE);

答案 4 :(得分: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>

的java:

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);
    }
}

答案 5 :(得分:0)

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

<TextView 
    android:autoLink="phone"
    android:linksClickable="true" 
    android:textColorLink="#5e9baa" />