美文网首页Android 开发之基础
Android textview中某一部分文字变色及点击事件

Android textview中某一部分文字变色及点击事件

作者: start筑梦 | 来源:发表于2016-11-08 00:12 被阅读82次

在开发过程中,可能会遇到某个textview上有一行文字,其中某几个文字颜色不同,并且可点击,还可响应点击事件,附上代码。

  public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    TextView textView = (TextView) findViewById(R.id.text1);
    SpannableStringBuilder spannable = new SpannableStringBuilder("可以点击的");
    spannable.setSpan(new ForegroundColorSpan(Color.RED), 2, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); //这个一定要记得设置,不然点击不生效textView.setMovementMethod(LinkMovementMethod.getInstance());  
    spannable.setSpan(new TextClick(), 2, 4
            , Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    textView.setText(spannable);
    avoidHintColor(textView);
}

private class TextClick extends ClickableSpan {
    @Override
    public void onClick(View widget) {
        Toast.makeText(MainActivity.this, "点击了这个", Toast.LENGTH_SHORT).show();
        //在此处理点击事件                                    
        // Log.e("------->", "点击了");        }    
        @Override public void updateDrawState (TextPaint ds){
            //ds.setColor(ds.linkColor);    
            // ds.setColor()设定的是span超链接的文本颜色
            //       ds.setUnderlineText(true);     
            //   }   
            // }    
            // 点击后的背景颜色(HighLightColor)属于TextView的属性,
            // Android4.0以上默认是淡绿色,低版本的是黄色   
            private void avoidHintColor (View view){
                if (view instanceof TextView) {
                    ((TextView) view).setHighlightColor(getResources().getColor
                            (android.R.color.transparent));
                }
            }
        }
    }
}

}

相关文章

网友评论

    本文标题:Android textview中某一部分文字变色及点击事件

    本文链接:https://www.haomeiwen.com/subject/iucauttx.html