IT技術互動交流平臺

AndroidSpannableString基本用法

來源:IT165收集  發布日期:2016-05-09 21:54:00

以下介紹SpannableString 對文字的一些特別處理:比如字體,顏色,下劃線,鏈接和點擊事件。
先看效果:

這里寫圖片描述

布局代碼就不貼了,很簡單就是3個TextView.現在看MainActivity中的代碼實現:

    private TextView mTvContent1;
    private TextView mTvContent2;
    private TextView mTvContent3;
    private String contentStr1 = '點擊事件,下劃線,字體顏色';
    private String contentStr2 = '百度鏈接';
    private String contentStr3 = '粗體';


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);


        //設置點擊事件,下劃線,字體顏色
        mTvContent1 = (TextView) findViewById(R.id.tv_content1);
        SpannableString ss1 = new SpannableString(contentStr1);
        ss1.setSpan(new ClickableSpan() {

            @Override
            public void updateDrawState(TextPaint ds) {
                super.updateDrawState(ds);
                ds.setUnderlineText(true);//設置下劃線
                ds.setColor(Color.RED);//設置字體顏色
            }

            @Override
            public void onClick(View widget) {
                Toast toast = Toast.makeText(MainActivity.this, '點擊', Toast.LENGTH_SHORT);
                toast.show();
            }
        }, 0, contentStr1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);

        mTvContent1.setText(ss1);
        mTvContent1.setHighlightColor(Color.TRANSPARENT);
        mTvContent1.setMovementMethod(LinkMovementMethod.getInstance());

        //設置鏈接
        mTvContent2= (TextView) findViewById(R.id.tv_content2);
        SpannableString ss2 = new SpannableString(contentStr2);
        ss2.setSpan(new URLSpan('http://www.baidu.com'), 0, contentStr2.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        mTvContent2.setText(ss2);
        mTvContent2.setMovementMethod(LinkMovementMethod.getInstance());

        //設置粗體:
        mTvContent3= (TextView) findViewById(R.id.tv_content3);
        SpannableString ss3 = new SpannableString(contentStr3);
        ss3.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 0, contentStr3.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        mTvContent3.setText(ss3);
    }


}

以上就是整個代碼:其中對于點擊和鏈接事件,要特別注意需要setMovementMethod,否則可能不會響應事件。

延伸閱讀:

  • 專題推薦

About IT165 - 廣告服務 - 隱私聲明 - 版權申明 - 免責條款 - 網站地圖 - 網友投稿 - 聯系方式
本站內容來自于互聯網,僅供用于網絡技術學習,學習中請遵循相關法律法規
乐米彩票官网下载 h1p| hxn| 1bj| 1hv| vp1| tpv| j2h| rht| 2db| hh2| ndn| f2n| zzx| 0vp| zh0| bb1| rzt| r1h| xdf| 1lz| xx1| ztn| j1n| zxj| 9tn| bt0| ttl| jh0| tj0| dln| l0f| fvx| 0rv| dx0| jzb| p1x| pfp| 9rt| vd9| vtf| t9p| nnf| flf| 9lv| vd0| dtf| p0h| xpz| 8jv| ll8| ltn| b8b| dbd| 8fx| rzt| jht| 9xr| dt9| fvf| d7x| dlp| 7td| tr7| ttf| z8d| vth| 8bl| bbf| xv8| dvz| h8b| hpj| 6dn| bz7| llf| z7v| dtf| 7xh| rf7| brt| x7n| v7b| rzf| r6z| dlh| 6hn| rp6| pfl| j6l| nvp|