TextView设置SpannableString 添加图片和点击事件(仿微信点赞列表)
TextView设置SpannableString 添加图片和点击事件(仿微信点赞列表)
在这个例子中,我们将创建一个TextView,用于显示点赞内容。我们将使用SpannableString来添加图片和点击事件。
一、布局文件首先,我们需要在布局文件中定义一个TextView和一个LinearLayout。
```xml
android:layout_height="wrap_content"> android:layout_width="wrap_content" android:layout_height="wrap_content" />
```
二、Java代码接下来,我们需要在Java代码中实现点赞内容的显示和点击事件。
```javapublic class VoteView extends LinearLayout {
private TextView tvVoteView;
private ListCountrySideInfo.VoteUser voteUsers;
public VoteView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
View.inflate(getContext(), R.layout.vote_view, this);
tvVoteView = findViewById(R.id.tv_vote_view);
// 点赞人布局(默认最多显示10个人)
setVoteStr(this, tvVoteView, new ArrayList<>());
}
/
* 点赞人布局(默认最多显示10个人)
*
* @param voteUsers */
public void setVoteStr(View llVoteView, TextView tvVoteView, ListCountrySideInfo.VoteUser voteUsers) {
this.voteUsers = voteUsers;
SpannableString spannableString = new SpannableString("");
for (int i =0; i < Math.min(10, voteUsers.size()); i++) {
CountrySideInfo.VoteUser user = voteUsers.get(i);
// 添加点赞人 String str = "点赞人" + (i +1) + ": " + user.getName() + "
";
spannableString.append(str);
}
tvVoteView.setText(spannableString);
// 添加点击事件 tvVoteView.setOnClickListener(new OnClickListener() {
@Override public void onClick(View v) {
Toast.makeText(getContext(), "点赞人列表", Toast.LENGTH_SHORT).show();
}
});
}
}
```
三、使用示例最后,我们需要在Activity中使用这个控件。
```javapublic class MainActivity extends AppCompatActivity {
@Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
VoteView voteView = new VoteView(this, null);
// 点赞人列表 ListCountrySideInfo.VoteUser voteUsers = new ArrayList<>();
voteUsers.add(new CountrySideInfo.VoteUser("张三"));
voteUsers.add(new CountrySideInfo.VoteUser("李四"));
voteUsers.add(new CountrySideInfo.VoteUser("王五"));
voteView.setVoteStr(voteView, null, voteUsers);
// 添加到布局中 LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
addContentView(voteView, layoutParams);
}
}
```
这样就完成了一个简单的点赞列表控件。