Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android中為TextView添加多個可點擊的文本

Android中為TextView添加多個可點擊的文本

編輯:關於Android編程


我們使用社交軟件的過程中多多少少會為別人的帖子點贊,如圖 :

\

可以看到用戶頁面顯示出來的只是點了贊的用戶的名稱,點擊這些名稱可以進入到該用戶的主頁。我們就來實現類似的效果。直接上代碼吧。

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

 TextView mTextView = (TextView) rootView.findViewById(R.id.like_tv);

            // 構造多個超鏈接的html, 通過選中的位置來獲取用戶名
            StringBuilder sbBuilder = new StringBuilder();
            for (int i = 0; i < 10; i++) {
                sbBuilder.append("username-" + i + "、");
            }

            String likeUsers = sbBuilder.substring(0, sbBuilder.lastIndexOf("、")).toString();
            mTextView.setMovementMethod(LinkMovementMethod.getInstance());
            mTextView.setText(addClickablePart(likeUsers), BufferType.SPANNABLE);

 }
         /**
         * @param str
         * @return
         */
        private SpannableStringBuilder addClickablePart(String str) {
            // 第一個贊圖標
            ImageSpan span = new ImageSpan(getActivity(), R.drawable.umeng_comm_like);
            SpannableString spanStr = new SpannableString("p.");
            spanStr.setSpan(span, 0, 1, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
            
            SpannableStringBuilder ssb = new SpannableStringBuilder(spanStr);
            ssb.append(str) ;

            String[] likeUsers = str.split("、");

            if (likeUsers.length > 0) {
                // 最後一個
                for (int i = 0; i < likeUsers.length; i++) {
                    final String name = likeUsers[i];
                    final int start = str.indexOf(name) + spanStr.length();
                    ssb.setSpan(new ClickableSpan() {

                        @Override
                        public void onClick(View widget) {
                            Toast.makeText(getView().getContext(), name,
                                    Toast.LENGTH_SHORT).show();
                        }

                        @Override
                        public void updateDrawState(TextPaint ds) {
                            super.updateDrawState(ds);
                            // ds.setColor(Color.RED); // 設置文本顏色
                            // 去掉下劃線
                            ds.setUnderlineText(false);
                        }

                    }, start, start + name.length(), 0);
                }
            }
            return ssb.append("等"
                    + likeUsers.length + "個人贊了您.");
        } // end of addClickablePart
運行效果如圖 :

\



  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved