之前要做一个类似于QQ空间的点赞人的实现,期初用到的流式布局来做的,但是后期发现有个很大的弊端就是格式会乱掉,很不整齐美观,于是就通过查资料实现了另一种方式,先来看看效果图。
代码:
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextPaint;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.text.style.ImageSpan;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class MainActivity extends AppCompatActivity {
TextView mTvName;
List mListZambiaData=new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mTvName= (TextView) findViewById(R.id.tv_name);
for (int i = 1; i < 22; i++) {
mListZambiaData.add(new Eneity(i+"","小明"+i));
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < mListZambiaData.size(); i++) {
sb.append(mListZambiaData.get(i).getName() + ", ");
}
String users = sb.substring(0, sb.lastIndexOf(", "));
mTvName.setMovementMethod(LinkMovementMethod.getInstance());
mTvName.setText(addClickPart(users), TextView.BufferType.SPANNABLE);
}
//定义点击每个部分文字的处理方法
private SpannableStringBuilder addClickPart(String users) {
ImageSpan imageSpan=new ImageSpan(getApplicationContext(),R.mipmap.dynamic_click_a_like);
SpannableString spanStr = new SpannableString("0");//任意文字 主要是实现效果
// Spanned.SPAN_EXCLUSIVE_EXCLUSIVE 前后都不包括
spanStr.setSpan(imageSpan,0,1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
//创建一个ssb 存储总的用户
SpannableStringBuilder ssb = new SpannableStringBuilder(spanStr);
ssb.append(users);
//为每段数据创建点击 事件
String[] users_array = users.split(", ");
if (users_array.length > 0) {
for (int i = 0; i < users_array.length; i++) {
final String user_name = users_array[i];//好友0
int start = users.indexOf(user_name) + spanStr.length();
//为每段数据增加点击事件
final int finalI = i;
ssb.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
if (!mListZambiaData.get(finalI).getId().equals("-1")) {
Toast.makeText(MainActivity.this
,"名字:"+mListZambiaData.get(finalI).getName()+"\n"
+"好友id:"+mListZambiaData.get(finalI).getId()
,Toast.LENGTH_SHORT).show();
}
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(getResources().getColor(R.color.mycolor));
ds.setUnderlineText(false);//下划线
}
}, start, start + user_name.length(), 0);
}
}
return ssb.append("等" + users_array.length + "位好友觉得很赞");
}
class Eneity{
private String id;
private String name;
public Eneity(String id, String name) {
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
转载时请注明出处及相应链接,本文永久地址:https://blog.yayuanzi.com/18724.html
微信打赏
支付宝打赏
感谢您对作者Joy的打赏,我们会更加努力! 如果您想成为作者,请点我