一、selctor不启作用
设置方法 : android:background="@drawable/fen_selector"
如果只有这个的话,是不起作用的。还必须加上: android:clickable="true"
二、setSpan 文本显示
效果如上,一个文本框内的文字多种显示效果
SpannableString text6 = new SpannableString("make a call");
text6.setSpan(new URLSpan("tel:10086"), 7, 11, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
text6.setSpan(new ForegroundColorSpan(color.purple), 0, 5, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
tv11.setText( text6 );
tv11.setMovementMethod(LinkMovementMethod.getInstance());
//setSpan(new StyleSpan(Typeface.BOLD_ITALIC), 5, 9, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
void android.text.SpannableString.setSpan(Object what, int start, int end, int flags)
what
flag
自定义 characterstyle ClickableSpan
默认的链接在点击时,只会跳转到响应的View,如点击URL时,打开浏览器,点击电话号码时,打开拨号界面。 如果我们要在点击某连接时,跳转到某个Activity呢。
URLSpan继承自ClickableSpan,所以我们的出发点也是这个类,然后重写其中的onClick
- public class IntentSpan extends ClickableSpan implements ParcelableSpan {
- private Intent mIntent;
- public IntentSpan(Intent toActivity) {
- mIntent = toActivity;
- }
- @Override
- public void onClick(View sourceView) {
- Context context = sourceView.getContext();
- context.startActivity( mIntent );
- }
- @Override
- public int getSpanTypeId() {
- return 100;
- }
- @Override
- public int describeContents() {
- return 0;
- }
- @Override
- public void writeToParcel(Parcel dest, int flag) {
- // don't write to parcel
- }
- public Intent getIntent() {
- return mIntent;
- }
- }
使用的话和URLSpan差不多
- SpannableString text6 = new SpannableString("make a call");
- Intent intent = new Intent(context, SomActivity.class);
- text6.setSpan(new IntentSpan(intent), 7, 11, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
- view6.setText( text6 );
- view6.setMovementMethod(LinkMovementMethod.getInstance());
引用自: http://mycoding.iteye.com/blog/1436660