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

运行效果如下图所示:

希望本文所述对大家的Android程序设计有所帮助

时间: 2024-07-30 15:11:15

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

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

本文实例展示了Android中实现为TextView添加多个可点击的文本的方法.该功能在Android社交软件的制作中非常具有实用价值.分享给大家供大家参考.具体如下: 很多时候我们在使用社交软件的过程中多多少少会为别人的帖子点赞,如下图所示: 可以看到用户页面显示出来的只是点了赞的用户的名称,点击这些名称可以进入到该用户的主页.下面我们就来实现类似的效果. 具体代码如下: @Override protected void onCreate(Bundle savedInstanceState)

管理-Android中怎么把图片添加进相册

问题描述 Android中怎么把图片添加进相册 Android中管理相册的类是哪个啊我想把图片存进相册应该怎么做呢我是把工程目录下的图片获取了然后存入到相册里面 解决方案 这个应该是利用系统的ContentProvider进行.参照下面博客,http://blog.csdn.net/mr_dsw/article/details/48524977 解决方案二: Android 相册图片 添加应用到分享列表android裁剪相册图片Android 保存图片到系统相册 解决方案三: 把你的图片放在相册

android开发-关于android中listview里面textview显示混乱

问题描述 关于android中listview里面textview显示混乱 哪位大神能帮我解决下面代码中的listview里面textview的显示混乱问题 纠结好久了 谢谢 复制可以直接执行 源文件: package com.example.listviewtest; import java.util.ArrayList; import android.os.Bundle; import android.app.Activity; import android.view.LayoutInfla

Android中ActionBar和ToolBar添加返回箭头的实例代码

1.ActionBar添加返回箭头 //onCreate方法中 ActionBar actionBar = this.getSupportActionBar(); actionBar.setTitle("搜索功能"); actionBar.setDisplayHomeAsUpEnabled(true); //activity类中的方法 @Override public boolean onOptionsItemSelected(MenuItem item) { if(item.getI

Android中自定义控件让TextView的drawableLeft与文本一起居中

前言 TextView的drawableLeft.drawableRight和drawableTop是一个常用.好用的属性,可以在文本的上下左右放置一个图片,而不使用更加复杂布局就能达到,我也常常喜欢用RadioButton的这几个属性实现很多效果,但是苦于不支持让drawbleLeft与文本一起居中,设置gravity为center也无济于事,终于有空研究了一下,这里与大家一起分享. 一.效果图 查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bian

app-Android中怎样实现动态添加一行EditView

问题描述 Android中怎样实现动态添加一行EditView 类似于联系人app中添加联系人号码的功能,可以按+后添加一栏EditView,增加一个号码,或是按按钮后增加修改联系人姓名(增加前缀后缀)的EditView. 解决方案 就拿添加联系人来说的:首先有一个按钮,你点击(这里是点击事件)后,会弹出一个界面,这个界面你用来添加手机,添加成功后,点击按钮后就添加了(这里点击按钮 后是对数据库执行添加操作的,如果是修改的话,你根据点击的位置得到联系人的Id,然后到数据库里修改就行了). 这里主

android-在Android中为线性布局添加标题

问题描述 在Android中为线性布局添加标题 我创建了如下的GUI,使用了线性布局,并且给这个布局设置了边框.我想在这个边框上插入标题.如何实现啊? 解决方案 设置一个 relative布局,然后在把所有的linear布局的代码添加在relative layout里.再添加textview,并且标明textview在top位置,同时给出外边距. <RelativeLayout> <TextView android:layout_alignParentTop="true&quo

text-Android中怎样获取动态添加EditText的内容

问题描述 Android中怎样获取动态添加EditText的内容 RT,在Android中如何获得动态添加EditText的输入文本内容? 解决方案 search是一个TextView,类似于这样处理就行了: search.addTextChangedListener(new TextWatcher() { //输入后的串 qr 0 1 2 @Override public void onTextChanged(CharSequence s, int start, int before, int

fragement-android中,如何获取添加到layout里面的fragment的引用?

问题描述 android中,如何获取添加到layout里面的fragment的引用? FragmentTransaction fragmentTransaction =getFragmentManager().beginTransaction(); fragmentTransaction.add(R.id.content_frame mapFragment); fragmentTransaction.commit(); 按上面的添加方式,我如何才能获取到R.id.content_frame这个f