Android供TextView添加多个点击文字

我们使用社会性软件的过程中会或多或少像别人的帖子点,图。 :

能够看到用户页面显示出来的仅仅是点了赞的用户的名称,点击这些名称能够进入到该用户的主页。我们就来实现相似的效果。直接上代码吧。

    @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

执行效果如图 :

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvYmJveWZlaXl1/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" width="400" height="640" style="border:1px solid black" />

版权声明:本文Mr.Simple原创文章,不得未经同意转载。

时间: 2024-10-21 13:04:51

Android供TextView添加多个点击文字的相关文章

android中TextView 添加ClickableSpan后点击选中文字背景问题

TextView中的setHighlightColor(int color)用于设置选中文字背景色高亮显示. 比如以下: public class MainActivity extends ActionBarActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); FrameLayout frameLayout = new FrameL

[android篇]textview中片段响应点击事件(SpannableString)

项目需求 点击textView中的一小段文字,弹一个dialog框 失败解决方案 刚开始是用了两个textView水平布局,可想而知,当第一个textView快占满一行,还未换行时,第二个textView很可能出现换行排版问题 用spannableString的问题 小段文字有下划线 点击textView中的小段文字时,系统会当做url处理,给点击部分的text加一个蓝色的背景 解决方案 public class TouchableSpan extends ClickableSpan { pri

android 为TextView添加边框

今天需要在TextView上面添加一个边框,但是TextView本身不支持边框,所以只能采用其他方式,在网上查询了一下,主要有三种方式可以实现1.带有边框的透明图片2.使用xml的shape设置3继承TextView覆写onDraw方法. 方法一: 带有透明图片的背景图,这个没有什么好将的,自己制作一个就行 ,然后设置background就可以了 方法二: 通过shape来设置背景图片 首先一个textview_border.xml文件放在drawable文件夹里面 [html] view pl

Android 给TextView添加点击事件

首先设定TextView的clickable属性为true. 可以在布局文件中进行设定,比如: <TextView android:id="@+id/phone" android:clickable="true" --------->设定此属性 android:layout_marginLeft="10dp" android:layout_below="@id/address" android:layout_toR

Android中TextView添加删除线

项目中的需求~~~~ 商城中物品的一个本身价格,还有一个就是优惠价格...需要用到一个删除线. public class TestActivity extends Activity { private TextView tv; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);

android:为TextView添加样式——下划线,颜色,设置链接样式及前背景色

实现下划线及颜色设置: public class AtActivity extends Activity { LinearLayout ll; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); l

Android中实现为TextView添加多个可点击的文本

这篇文章主要介绍了Android中实现为TextView添加多个可点击的文本,可实现类似Android社交软件显示点赞用户并通过用户名称进入该用户主页的功能,是非常实用的技巧,需要的朋友可以参考下.具体如下: 很多时候我们在使用社交软件的过程中多多少少会为别人的帖子点赞,如下图所示: 可以看到用户页面显示出来的只是点了赞的用户的名称,点击这些名称可以进入到该用户的主页.下面我们就来实现类似的效果. 具体代码如下: 1 @Override 2 protected void onCreate(Bun

Android 编程下 TextView 添加链接的一种方式

原文地址:http://www.cnblogs.com/sunzn/p/3406013.html 通过如下这种方式给 TextView 添加的链接支持链接样式.点击事件.href 样式,代码如下: package cn.sunzn.tlink; import android.app.Activity; import android.os.Bundle; import android.text.Html; import android.text.Spanned; import android.te

我的Android进阶之旅------&gt; Android为TextView组件中显示的文本添加背景色

通过上一篇文章 我的Android进阶之旅------> Android在TextView中显示图片方法 (地址:http://blog.csdn.net/ouyang_peng/article/details/46916963) 我们学会了在TextView中显示图片的方法,现在我们来学习如何为TextView组件中显示的文本添加背景色.要求完成的样子如图所示: 首先来学习使用BackgroundColorSpan对象设置文字背景色,代码如下: TextView textView=(TextV