TextView中的setHighlightColor(int color)用于设置选中文字背景色高亮显示。

 比如以下:

 

public class MainActivity extends ActionBarActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);if (savedInstanceState == null) {            getSupportFragmentManager().beginTransaction()                    .add(android.R.id.content, new PlaceholderFragment())                    .commit();        }    }    @Override    public boolean onCreateOptionsMenu(Menu menu) {        // Inflate the menu; this adds items to the action bar if it is present.        getMenuInflater().inflate(R.menu.menu_main, menu);        return true;    }    @Override    public boolean onOptionsItemSelected(MenuItem item) {        // Handle action bar item clicks here. The action bar will        // automatically handle clicks on the Home/Up button, so long        // as you specify a parent activity in AndroidManifest.xml.        int id = item.getItemId();        //noinspection SimplifiableIfStatement        if (id == R.id.action_settings) {            return true;        }        return super.onOptionsItemSelected(item);    }    /**     * A placeholder fragment containing a simple view.     */    public static class PlaceholderFragment extends Fragment {        public PlaceholderFragment() {        }        @Override        public View onCreateView(LayoutInflater inflater, ViewGroup container,                                 Bundle savedInstanceState) {            View rootView = inflater.inflate(R.layout.fragment_main, container, false);            return rootView;        }        @Override        public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {            super.onViewCreated(view, savedInstanceState);            TextView textView = (TextView) view.findViewById(R.id.textview);            String str = "Click me!";            String txt = str + "Hello world!";            SpannableString spannableString = new SpannableString(txt);            ClickableSpan clickableSpan = new ClickableSpan() {                @Override                public void onClick(View widget) {                    //Do something.                    if(isAdded()) {                        Toast.makeText(getActivity(), "You have clicked!", Toast.LENGTH_LONG).show();//                        avoidHintColor(widget);                    }                }                @Override                public void updateDrawState(@NonNull TextPaint ds) {                    super.updateDrawState(ds);                    ds.setColor(getResources().getColor(android.R.color.holo_red_dark));                    ds.setUnderlineText(false);                    ds.clearShadowLayer();                }            };            spannableString.setSpan(clickableSpan,0,str.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);            textView.setText(spannableString);            textView.setMovementMethod(LinkMovementMethod.getInstance());        }        private void avoidHintColor(View view){            if(view instanceof TextView)                ((TextView)view).setHighlightColor(getResources().getColor(android.R.color.transparent));        }    }}

 

会出现文字选中出现淡绿色的背景色现象。如下图1.1。ds.setColor()设定的是span超链接的文本颜色,而不是点击后的颜色,点击后的背景颜色(HighLightColor)属于TextView的属性,Android4.0以上默认是淡绿色,低版本的是黄色。

   解决方法就是通过

((TextView)view).setHighlightColor(getResources().getColor(android.R.color.transparent));方法重新设置文字背景为透明色。

 修改后的结果如图1.2。

图1.1:

Android中TextView 添加ClickableSpan后点击选中文字背景变色问题_第1张图片

 

 

图1.2:

Android中TextView 添加ClickableSpan后点击选中文字背景变色问题_第2张图片

更多相关文章

  1. android 背景边框变圆角的几种方法
  2. android对话框代码中设置背景为透明
  3. android中实现背景图片颜色渐变方法
  4. android PopupWindow 阴影背景 、动画 、点击显示、隐藏
  5. Android TextView带背景图片和自定义边框
  6. Android在配置文件中配置Button再不同情况下的的背景
  7. android之4.0控件switch自定义开关背景图片和控制宽度

随机推荐

  1. Android 开机启动App
  2. Android GPS获取地理位置
  3. Android APP 版本更新通知代码
  4. Android通过图片名字获得ID
  5. android 自定义View 对话框
  6. Android Http通信(使用 标准Java接口)及
  7. 联系人存储ContactsProvider表分析
  8. android中Json数据保存方式
  9. android xml属性的单位大全
  10. Android 开发之JNI学习笔记