关闭

TextView图文混排

188人阅读 评论(0) 收藏 举报
分类:

res-layout-main.xml

[html] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_height="wrap_content" android:layout_width="wrap_content" android:orientation="horizontal">  
  4. <TextView    
  5.     android:id="@+id/myTextView"  
  6.     android:layout_width="fill_parent"   
  7.     android:layout_height="wrap_content"   
  8.     />  
  9. </LinearLayout>  


res-color-color.xml

res-color-linkcolor.xml

[html] view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <selector  xmlns:android="http://schemas.android.com/apk/res/android">  
  3.     <item android:state_pressed="true"  
  4.           android:color="#ffffff00"/> <!-- pressed -->  
  5.     <item android:state_focused="true"  
  6.           android:color="#ff00ffff"/> <!-- focused -->  
  7.     <item android:color="#ff0ff000"/> <!-- default -->  
  8. </selector>  


TextViewLinkActivity

[java] view plain copy
  1. public class TextViewLinkActivity extends Activity {  
  2.     TextView mTextView = null;     
  3.     SpannableString msp = null;    
  4.       
  5.     /** Called when the activity is first created. */  
  6.     @Override  
  7.     public void onCreate(Bundle savedInstanceState) {  
  8.         super.onCreate(savedInstanceState);  
  9.         setContentView(R.layout.main);  
  10.           
  11.         mTextView = (TextView)findViewById(R.id.myTextView);  
  12.           
  13.         //创建一个 SpannableString对象    
  14.         msp = new SpannableString("字体测试字体大小一半两倍前景色背景色正常粗体斜体粗斜体下划线删除线x1x2电话邮件网站短信彩信地图X轴综合/bot");   
  15.           
  16.         //设置字体(default,default-bold,monospace,serif,sans-serif)  
  17.         msp.setSpan(new TypefaceSpan("monospace"), 02, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
  18.         msp.setSpan(new TypefaceSpan("serif"), 24, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
  19.           
  20.         //设置字体大小(绝对值,单位:像素)   
  21.         msp.setSpan(new AbsoluteSizeSpan(20), 46, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
  22.         msp.setSpan(new AbsoluteSizeSpan(20,true), 68, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //第二个参数boolean dip,如果为true,表示前面的字体大小单位为dip,否则为像素,同上。  
  23.           
  24.         //设置字体大小(相对值,单位:像素) 参数表示为默认字体大小的多少倍  
  25.         msp.setSpan(new RelativeSizeSpan(0.5f), 810, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //0.5f表示默认字体大小的一半  
  26.         msp.setSpan(new RelativeSizeSpan(2.0f), 1012, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //2.0f表示默认字体大小的两倍  
  27.           
  28.         //设置字体前景色  
  29.         msp.setSpan(new ForegroundColorSpan(Color.MAGENTA), 1215, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //设置前景色为洋红色  
  30.           
  31.         //设置字体背景色  
  32.         msp.setSpan(new BackgroundColorSpan(Color.CYAN), 1518, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //设置背景色为青色  
  33.        
  34.         //设置字体样式正常,粗体,斜体,粗斜体  
  35.         msp.setSpan(new StyleSpan(android.graphics.Typeface.NORMAL), 1820, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //正常  
  36.         msp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 2022, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //粗体  
  37.         msp.setSpan(new StyleSpan(android.graphics.Typeface.ITALIC), 2224, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //斜体  
  38.         msp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD_ITALIC), 2427, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  //粗斜体  
  39.           
  40.         //设置下划线  
  41.         msp.setSpan(new UnderlineSpan(), 2730, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
  42.           
  43.         //设置删除线  
  44.         msp.setSpan(new StrikethroughSpan(), 3033, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
  45.           
  46.         //设置上下标  
  47.         msp.setSpan(new SubscriptSpan(), 3435, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //下标     
  48.         msp.setSpan(new SuperscriptSpan(), 3637, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);   //上标              
  49.           
  50.         //超级链接(需要添加setMovementMethod方法附加响应)  
  51.         msp.setSpan(new URLSpan("tel:4155551212"), 3739, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //电话     
  52.         msp.setSpan(new URLSpan("mailto:webmaster@google.com"), 3941, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //邮件     
  53.         msp.setSpan(new URLSpan("http://www.baidu.com"), 4143, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //网络     
  54.         msp.setSpan(new URLSpan("sms:4155551212"), 4345, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //短信   使用sms:或者smsto:  
  55.         msp.setSpan(new URLSpan("mms:4155551212"), 4547, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //彩信   使用mms:或者mmsto:  
  56.         msp.setSpan(new URLSpan("geo:38.899533,-77.036476"), 4749, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);     //地图     
  57.           
  58.         //设置字体大小(相对值,单位:像素) 参数表示为默认字体宽度的多少倍  
  59.         msp.setSpan(new ScaleXSpan(2.0f), 4951, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //2.0f表示默认字体宽度的两倍,即X轴方向放大为默认字体的两倍,而高度不变  
  60.           
  61.         //设置字体(依次包括字体名称,字体大小,字体样式,字体颜色,链接颜色)  
  62.         ColorStateList csllink = null;  
  63.         ColorStateList csl = null;  
  64.         XmlResourceParser xppcolor=getResources().getXml (R.color.color);  
  65.         try {  
  66.             csl= ColorStateList.createFromXml(getResources(),xppcolor);  
  67.         }catch(XmlPullParserException e){  
  68.             // TODO: handle exception  
  69.             e.printStackTrace();          
  70.         }catch(IOException e){  
  71.             // TODO: handle exception  
  72.             e.printStackTrace();          
  73.         }  
  74.   
  75.         XmlResourceParser xpplinkcolor=getResources().getXml(R.color.linkcolor);  
  76.         try {  
  77.             csllink= ColorStateList.createFromXml(getResources(),xpplinkcolor);  
  78.         }catch(XmlPullParserException e){  
  79.             // TODO: handle exception  
  80.             e.printStackTrace();          
  81.         }catch(IOException e){  
  82.             // TODO: handle exception  
  83.             e.printStackTrace();          
  84.         }  
  85.         msp.setSpan(new TextAppearanceSpan("monospace",android.graphics.Typeface.BOLD_ITALIC, 30, csl, csllink), 5153, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);   
  86.        
  87.         //设置项目符号  
  88.         msp.setSpan(new BulletSpan(android.text.style.BulletSpan.STANDARD_GAP_WIDTH,Color.GREEN), 0 ,msp.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); //第一个参数表示项目符号占用的宽度,第二个参数为项目符号的颜色  
  89.   
  90.         //设置图片  
  91.         Drawable drawable = getResources().getDrawable(R.drawable.icon);   
  92.         drawable.setBounds(00, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());    
  93.         msp.setSpan(new ImageSpan(drawable), 5357, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);  
  94.           
  95.         mTextView.setText(msp);  
  96.         mTextView.setMovementMethod(LinkMovementMethod.getInstance());   
  97.     }  
  98. }  


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:156435次
    • 积分:4376
    • 等级:
    • 排名:第7316名
    • 原创:268篇
    • 转载:178篇
    • 译文:1篇
    • 评论:9条
    文章分类
    新浪微博
    最新评论