Android之TextView進階用法

來源:互聯網
上載者:User

標籤:android   style   ext   c   int   get   

功能:

  1. 在TextView中顯示圖片,類似於含有表情圖片的聊天

  2.設定TextView的部分text可以點擊

說明:

  SpannableString 實現了CharSequence介面,可以將text的指定部分標記為CharacterStyle對象,如ImageSpan,ClickableSpan等,TextView在顯示時會將標記為CharacterStyle的部分text做特定處理

 

代碼1:  在TextView中顯示圖片    

  // TextView
  mTextView = (TextView) findViewById(R.id.textView1);
  // 建立SpannableString對象
  SpannableString stringSpan = new SpannableString("0123456789");
  // 建立CharacterStyle對象
  ImageSpan imageSpan = new ImageSpan(this, R.drawable.p1);
  // 將SpannableString的0~3共3個字元標記為ImageSpan對象(CharacterStyle)
  stringSpan.setSpan(imageSpan, 0, 3, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
  // 將SpannableString的4~5共1個字元標記為imageSpan對象
  // 注意:一個ImaggeSpan對象只能標記一次
  stringSpan.setSpan(new ImageSpan(this,R.drawable.p2), 4, 5, Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
  // 顯示text,此時,輸出結果為: 圖片(p1)3圖片(p2)56789
  mTextView.setText(getSpannableString());

 

代碼2:  在TextView中顯示部分可點擊的文字

  // TextView
  mTextView = (TextView) findViewById(R.id.textView1);
  // 建立SpannableString對象
  SpannableString stringSpan = new SpannableString("0123456789");
  // 建立ClickableSpan對象,用於標記可點擊的text
  ClickableSpan clickSpan = new ClickableSpan() {
    // 當被標記時text被點擊時的回調方法
    @Override
    public void onClick(View arg0) {
      Log.i("DTV", "click");
    }
    // 用於定義被標記文字的樣式
    @Override
    public void updateDrawState(TextPaint ds) {
      super.updateDrawState(ds);
      // 設定無底線
      ds.setUnderlineText(false);
    }
  };
  // 標記文字
  stringSpan.setSpan(clickSpan, 6, 9, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
  // 顯示text,此時,輸出結果為: 圖片(p1)3圖片(p2)56789
  mTextView.setText(stringSpan);
  mTextView.setMovementMethod(LinkMovementMethod.getInstance());// 必須要有,否則不會調用onClick方法

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.