問題はほとんどありません。clickablespanをクリックするときに、このオレンジ色のハイライトを削除またはカスタマイズする必要があります。これはClickableSpanを拡張する私のクラスです
public class InternalClickableSpan extends ClickableSpan {
private String clicked;
@Override
public void updateDrawState(TextPaint ds) {
ds.setUnderlineText(false);
}
public InternalClickableSpan(String clickedString) {
clicked = clickedString;
}
@Override
public void onClick(View view) {
Selection.setSelection((Spannable) ((TextView)view).getText(), 0);
Toast toast = Toast.makeText(mContext, clicked, Toast.LENGTH_SHORT);
toast.show();
}
}
これがテキストビューでの使用方法です
Spannable spans = (Spannable) tv.getText();
spans.setSpan(new InternalClickableSpan(contacts[i]), text.indexOf(contacts[i]), text.indexOf(contacts[i])+contacts[i].length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
スパナブルオブジェクトの「onclickhighlight」をカスタマイズする方法を知っている人はいますか?
編集:応答をありがとうAleadam、私はupdateDrawStateをオーバーライドしています(私のInternalClickableSpanクラスの最初のメソッドを見てください)が、とにかくこのハイライトをカスタマイズする方法を見つけることができません。誰か他のアイデアがありますか?ありがとう
次のようにonClick(View widget)
をオーバーライドできます。
@Override
public void onClick(View widget) {
// do what must happen after click event.
widget.invalidate();
}
これにより、ハイライトが削除されます。
tv.setHighlightColor(Color.TRANSPARENT);
ClickableSpan linkClick = new ClickableSpan() {
@Override
public void onClick(View view) {
Toast.makeText(getApplicationContext(), "Link Click",
Toast.LENGTH_SHORT).show();
view.invalidate();
}
@Override
public void updateDrawState(TextPaint ds) {
if (textView.isPressed()) {
ds.setColor(Color.BLUE);
} else {
ds.setColor(Color.RED);
}
textView.invalidate();
}
};
textView.setHighlightColor(Color.TRANSPARENT);
Spannable spannableString = new SpannableString("Link in TextView");
spannableString.setSpan(linkClick, 0, 4, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(spannableString, TextView.BufferType.SPANNABLE);
textView.setMovementMethod(LinkMovementMethod.getInstance());
これを使ってください。
view.setSelector(new ColorDrawable(Color.TRANSPARENT));
uはデフォルトのhighlightColorを置き換えることができますAndroid:textColorHighlight
<TextView
Android:id="@+id/tv_tip"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:textColor="#727998"
Android:textColorHighlight="@Android:color/transparent"
tools:text="@string/_tip" />
またはフォーカスを無効にする
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout Android:id="@+id/LinearLayout01"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
xmlns:Android="http://schemas.Android.com/apk/res/Android">
<LinearLayout Android:id="@+id/LinearLayout02"
Android:layout_height="50px"
Android:layout_width="fill_parent"
// Layout Click enable
Android:clickable="true"
// Setting Highlight Option in background property
Android:background="@Android:drawable/list_selector_background" />
</LinearLayout>
</LinearLayout>