100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > 解决TextView drawableLeft设置图片不能居中

解决TextView drawableLeft设置图片不能居中

时间:2024-02-26 07:52:19

相关推荐

解决TextView drawableLeft设置图片不能居中

解决TextView drawableLeft设置图片不能居中

今天在项目中遇到个为题,需要在RadioButton 中设置drawableLeft,一开始都很正常,但是最后要把文本内容居中显示,于是问题就来了,不管怎么搞drawableLeft就是不变,始终在左边,不能跟文本内容一起居中,在网上找了好长时间,好多都是自定义TextView的onDraw()移动canvas到中心位置,但是拿来试根本没用,也没有找到原因在哪,,,,,苦思冥想,最终想起SpanString可以混合文本加图片,于是就顺着这个思路去自定义RadioButton.因为RadioButton继承自Button ,Button又继承自TextView

//因为我是用于RadioGroup,需要选中显示左边的对号,不选择, 去掉文本@Overridepublic void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {Log.d(TAG, "onCheckedChanged: isChecked= "+isChecked+" text= "+getText() );//当前控件若是选中状态if (isChecked){//获取图片资源对象,因为我只是简单写写, 所以实际使用中可以自定义属性传过来图片引用,然后在获取 drawable = getResources().getDrawable(R.drawable.duihao);//设置图片Bounds如果不设置,可能获取不到图片 drawable.setBounds(0,0,drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());// 用span加图片的原理就是把文字的占位符替换成图片//所以这里先把 View 的内容设置成一个字符串+我们设置的文本内容String text = "span"+getText().toString();//先new一个spannableSrtring 对象,传入我们拼接好的字符串SpannableString spannableString = new SpannableString(text);//new 一个ImageSpan 传入我们的图片对象ImageSpan imageSpan = new ImageSpan(drawable,ImageSpan.ALIGN_BASELINE);Log.d(TAG, "onCheckedChanged: preString= "+preString);//然后用spannableString.setSpan()来完成字符串替换图片spannableString.setSpan(imageSpan,0,"span".lenth(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE);//设置到TextView中setText(spannableString);//不是选中状态,则设为原先的内容}else{// preString是文本原先的文字,我们可以在构造方法中先获取setText(preString);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。