AndroidTextViewでこのような効果を実現するにはどうすればよいですか。どういうわけか選択したテキストのように見え、APIで似たようなものを見つけることができませんでした。
これは、ビューの背景色ではなく、テキストのみの背景色です。改行で停止し、テキスト行の間に細い白い線があることがわかります。
AndroidTextViewでこのような効果を実現するにはどうすればよいですか。どういうわけか選択したテキストのように見え、APIで似たようなものを見つけることができませんでした。
これは、ビューの背景色ではなく、テキストのみの背景色です。改行で停止し、テキスト行の間に細い白い線があることがわかります。
<TextView
android:background="#0000FF"
android:textColor="#FFFFFF" />
TextView
青い背景と白いテキストでを定義しますか...それはあなたが必要とするものですか?
私が見る限り、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
スパンテキストの外観を変更するために使用します。
これを実現するためのより簡単で優れた方法があると思います。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);
これで十分だと思います。
ありがとう
この例を使用する
<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
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);
ファイルtextview
内でこれを試してください:.xml
<TextView android:background="#0000FF">
TextViewの長match_parent
さを、画面の全長にまたがる親値内にネストされていると想定して設定するだけで、テキストは同じ長さになりますが、ボックスは画面の全長に増加します。
テキストの背景色にこれを使用してみてください
<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"/>
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>