2

xmlファイルに設定された特定のテキストを含むテキストビューがあり、strings.xmlには下線が引かれています。今、このテキストビューを編集テキストの内容、つまりユーザーが入力しているものに変更しています。そのテキストにテキストビューに設定する前に、特定の文字列も追加しています。この新しい文字列を作成して、青色で下線を付けてクリックできるようにします。使ってみた

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

これは機能していません。これを onResume() で使用できますか?下線の色を青に変更する方法がわかりません:(

4

6 に答える 6

3

TextView でテキストの下線を引く方法は 3 つあります。

  1. SpannableString

  2. setPaintFlags(); TextViewの

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

2回目のアプローチ

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

From:
Android で TextView の下に下線を引くには

于 2014-05-21T11:14:13.823 に答える
0

このように使用できます

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

必要なカラーコードを使用してください。

于 2012-11-26T05:54:19.527 に答える
0

これで試してください

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

このスタイルは、デフォルトの下線を削除し、渡された色の 1 ピクセルの境界線を配置します。

于 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

レイアウト xml ファイルに次のコードを追加します。

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