14

AndroidTextViewでこのような効果を実現するにはどうすればよいですか。どういうわけか選択したテキストのように見え、APIで似たようなものを見つけることができませんでした。

これは、ビューの背景色ではなく、テキストのみの背景色です。改行で停止し、テキスト行の間に細い白い線があることがわかります。

スクリーンショット

4

9 に答える 9

17
<TextView
android:background="#0000FF"
android:textColor="#FFFFFF" />

TextView青い背景と白いテキストでを定義しますか...それはあなたが必要とするものですか?

于 2013-03-23T03:12:41.210 に答える
4

私が見る限り、TextViewをオーバーライドし、ギャップカラーを含むビューにカスタムペイントを描画せずにこれを行う「良い」方法はありません。

lineSpacingExtraプロパティを設定しても、背景色が拡大するだけです。

また、カスタムの作成を検討して、次のspannableように使用することもできます。

Spannable str = new SpannableStringBuilder("How can I achieve such an effect with an Android TextView. It looks somehow like selected text and I couldn't find something similar in the API.");
str.setSpan(new NewSpannableClass(), 0, str.length() - 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
((TextView)findViewById(R.id.text)).setText(str);

NewSpannableClassカスタムスパン可能はどこにありますか。

多くの人がカスタムスパナブルの作成方法を探すのに怠惰であるのを見て、ここに例があります

public class CustomSpannable extends ClickableSpan
{
    @Override public void updateDrawState(TextPaint ds)
    {
        super.updateDrawState(ds);
        ds.setUnderlineText(true);
    }
}

この例では、テキストに下線を付けます。TextPaintスパンテキストの外観を変更するために使用します。

于 2013-03-23T11:06:51.327 に答える
4

これを実現するためのより簡単で優れた方法があると思います。backgroundColorSpanを作成してSpannableStringに追加するだけです。それらの線に沿った何か:

public static SpannableString buildBackgroundColorSpan(SpannableString spannableString,
                                                String text, String searchString, int color) {

    int indexOf = text.toUpperCase().indexOf(searchString.toUpperCase());

    try {
        spannableString.setSpan(new BackgroundColorSpan(color), indexOf,
                (indexOf + searchString.length()), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    } catch (Exception e) {

    }


    return spannableString;
}

ここで、「spannableString」は、作成され、「text」で初期化されると想定されるSpannableStringオブジェクトです。「searchString」は、TextViewで「強調表示」するテキストを表し、「color」は、「強調表示された」テキストを設定する背景色を表します。

String text = "The Quick Brown Fox Jumps over the Lazy Dog";
String searchString = "brown";
int color = Color.parseColor("#FFF5F19E");

SpannableString spannableString = new SpannableString(text);
spannableString = StringUtils.buildBackgroundColorSpan(spannableString, text, searchString, color);

これで十分だと思います。

ありがとう

于 2015-05-27T09:08:12.433 に答える
1

この例を使用する

 <TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#0000FF"
    android:textColor="#FFFFFF" />

色の選択については、このリンク http://html-color-codes.info/を使用してください

赤:#750A0A

青:#002BFF

緑:#33FF00

白:#FFFFFF

黒:#000000

于 2013-03-23T04:18:04.773 に答える
1

XMLからそれを実行したい場合は、次のように答えた他の人々の解決策を試してください。

 <TextView
            android:id="@+id/TextView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:textColor="#ffffff"
            android:background="#1bgtbgt"/>

アクティビティコードから実行する場合は、次のように動的に変更できます。

text.setBackgroundColor( int color);
于 2014-04-18T12:13:07.073 に答える
0

ファイルtextview内でこれを試してください:.xml

<TextView android:background="#0000FF">
于 2013-03-23T11:20:45.050 に答える
0

TextViewの長match_parentさを、画面の全長にまたがる親値内にネストされていると想定して設定するだけで、テキストは同じ長さになりますが、ボックスは画面の全長に増加します。

于 2015-09-13T17:07:03.987 に答える
-1

テキストの背景色にこれを使用してみてください

 <TextView
            android:id="@+id/comment_dis"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:text="Stack Overflow
            android:textColor="#ffffff"
            android:background="#3cabdc"/>
于 2013-03-23T05:09:41.877 に答える
-1

TextViewの周りに別のレイアウトを追加し、その背景を必要な色に設定できます

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#000000" >

    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textColor="#FFFFFF"
        android:text="@string/text" />

</LinearLayout>
于 2013-10-02T05:58:08.310 に答える