您需要做的第一件事是将CardView 的高度 设置为wrap_content。
之后的一切都将使用 Java 以编程方式完成。
接下来,将此方法放在扩展 RecyclerView.ViewHolder 的 ViewHolder 中:
private void Ellipsize(boolean activate, TextView textView){
if (activate) {
textView.setSingleLine(true);
textView.setEllipsize(TextUtils.TruncateAt.END);
}
else{
textView.setSingleLine(false);
textView.setEllipsize(null);
}
}
调用Ellipsize(boolean activate, TextView textView); 并传入必要的参数。传入true 和your_long_text_view 给它一个省略号。
void setText(String text){
TextView textTV = itemView.findViewById(R.id.TEXTVIEW_ID);
textTV.setText(text);
Ellipsize(true, textTV);
}
要为您的 TextView 提供展开和折叠功能,请在您的 ViewHolder 中添加此方法:
isExpanded 的布尔值是 false 并且是全局声明的。
private void ExpandCollapse(final TextView textView, final View view){
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(isExpanded) {
TransitionManager.beginDelayedTransition((ViewGroup) view.getRootView(), new AutoTransition());
Ellipsize(false, textView);
}
else{
TransitionManager.beginDelayedTransition((ViewGroup) view.getRootView(), new AutoTransition());
Ellipsize(true, textView);
}
isExpanded = !isExpanded;
}
});
}
添加所有必要的方法后,在 onBindViewHolder 中调用它们并传入在 ViewHolder 类中全局声明的 TextView 以及 itemView
@Override
protected void onBindViewHolder(@NonNull final ViewHolder holder, final int position, @NonNull final Model model) {
holder.setText(model.getText());
holder.ExpandCollapse(holder.textTV, holder.itemView);
}