DrawableIcon的设置

对于TextView或者EditText动态设置drawableLeft,drawableRight,drawableTop,drawableBottom,drawableStart,drawableEnd的方法总结

Android中提供了许多动态设置的方法

但是用中容易造成的问题是,我们往往只调用了如上的一些方法,但并没有将Drawable的Bounds设置为特定的数据,导致这些图片无法显示,因此,做如下操作即可

设置右方向上的图片

Drawabledrawable=getResources().getDrawable(R.drawable.hotel_search);drawable.setBounds(0,0,drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());selectCityTv.setCompoundDrawables(null,null,drawable,null);

或者我们可以使用另外一些方法

selectCityTv.setCompoundDrawablesWithIntrinsicBounds(Drawableleft,Drawabletop,Drawableright,Drawablebottom)

-------这里就不再试验了------------------------------

TextPaint+Html实现TextView图文混排

  • 一.使用SpannableString

  • 二.使用 TextPaint

一.使用SpannableString

实现URL的自动匹配:

URLSpan可以自行匹配,Image需要使用到Html,这基本解决了80%的开发需求

TextViewtv=(TextView)findViewById(R.id.myTextView);tv.setMovementMethod(LinkMovementMethod.getInstance());StringhtmlSource="<ahref='http://m.baidu.com'>百度</a>"+"<br/>图1<br/><imgsrc='ic_hua1'/>"+"<br/>图2<br/><imgsrc='ic_hua2'/>"+"<br/>图3<br/><imgsrc='ic_hua3'/>"+"<br/>图4<br/><imgsrc='ic_hua4'/>"+"<br/><ahref='http://m.sina.com.cn'>新浪</a>"+"<br/>联系电话:<ahref='tel:130888954276'>130888954276</a>";resources=getResources();CharSequencecharSequence=Html.fromHtml(htmlSource,newHtml.ImageGetter(){@OverridepublicDrawablegetDrawable(Stringsource){intidentifier=resources.getIdentifier(source,"drawable",getPackageName());Log.e("identifier","identifier="+identifier);Drawabledrawable=resources.getDrawable(identifier);drawable.setBounds(0,0,drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());returndrawable;}},null);SpannableStringspanStr=newSpannableString(charSequence);URLSpan[]urlspans=spanStr.getSpans(0,spanStr.length(),URLSpan.class);for(URLSpanurlspan:urlspans){Log.d("url","url="+urlspan.getURL());spanStr.setSpan(newURLSpan(urlspan.getURL()){@OverridepublicvoidupdateDrawState(TextPaintds){super.updateDrawState(ds);//设置删除线ds.setFlags(TextPaint.STRIKE_THRU_TEXT_FLAG);//设置下划线ds.setUnderlineText(true);//设置颜色ds.setColor(0xfff90202);}@OverridepublicvoidonClick(Viewwidget){Log.e("widget","url="+getURL());try{URIuri=newURI(getURL());if("http".equalsIgnoreCase(uri.getScheme())||"https".equalsIgnoreCase(uri.getScheme())){//网络请求}elseif("tel".equalsIgnoreCase(uri.getScheme())){//电话}elseif("mailto".equalsIgnoreCase(uri.getScheme())){//邮箱}elseif("page".equalsIgnoreCase(uri.getScheme())){//Activity跳转}}catch(URISyntaxExceptione){e.printStackTrace();}}},spanStr.getSpanStart(urlspan),spanStr.getSpanEnd(urlspan),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);}tv.setText(spanStr);

类似QQ的气泡上的图片,不一定是表情图片,因此,这里我们需要实现异步加载图片的方案,具体实现使用ImageLoader即可

二.使用 TextPaint
TextPaint属于原始的绘制工具TextPainttp=textView.getPaint();我们通过设置画壁来实现图文混排tp.setXXX


try doing it

更多相关文章

  1. Android工程报错常见解决方法
  2. Android开发:Activity之间的跳转及销毁Activity的方式
  3. 【Android】解决FloatMath类中方法在API 23以后不存在问题
  4. Android(安卓)手机 Google Play 商店“从服务器检索信息时出错 [
  5. Android(安卓)系统的Zygote初始化过程
  6. 记录Activity的onCreate()方法的参数PersistableBundle
  7. Jetpack组件之Lifecycle用途及原理
  8. Android(安卓)Widget点击事件
  9. Android自带倒计时控件Chronometer使用方法详解

随机推荐

  1. Android(安卓)Intent调用大全,Android自带
  2. Android(安卓)studio 继承view 画笔画圆
  3. android中fragment之间传值
  4. Android(安卓)比Timer更好方法
  5. android webview读取本地相册时“Not all
  6. Android(安卓)访问权限许可大全
  7. Android(安卓)O u-blox gps移植
  8. Android-- 输入法键盘控制
  9. Android(安卓)播放音乐的service
  10. Android(安卓)倒计时控件