博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android中TextView 添加ClickableSpan后点击选中文字背景变色问题
阅读量:6185 次
发布时间:2019-06-21

本文共 3487 字,大约阅读时间需要 11 分钟。

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:

 

 

图1.2:

 

转载于:https://www.cnblogs.com/sxzheng/p/4245873.html

你可能感兴趣的文章
43. Multiply Strings字符串相乘
查看>>
JavaScript数据类型
查看>>
UGUI组件之 Anchors 锚点定位(九宫定位 and 弹性定位)简单笔记
查看>>
监控HTTP(1)
查看>>
JavaScript函数继承与伪类继承
查看>>
NGUI的输入框制作(attach- input filed script的使用)
查看>>
回溯法——批处理作业调度
查看>>
【阿里面试题】Java中的类及方法的加载顺序
查看>>
Eclipse “cannot be resolved to a type” error
查看>>
笔试题
查看>>
【java集合框架源码剖析系列】java源码剖析之TreeMap
查看>>
【POI】对于POI无法处理超大xls等文件,官方解决方法【已解决】【多线程提升速率待定】...
查看>>
定义函数指针
查看>>
bcg库使用心得两则
查看>>
Android菜鸟的成长笔记(15)—— Android中的状态保存探究(下)
查看>>
从《谍中谍4》看知识经济时代团队的特点
查看>>
在稳定性测试中,将测试结果持续填加进入html报告
查看>>
python pytest测试框架介绍二
查看>>
如何往jumpserver上添加服务器
查看>>
Android dialog 问题
查看>>