展开全部的时候展开所有。这个效果大家有什么想法。
1.一种方法是直接自定义Textview来写。
2.第二种是直接自定义view来写,但是太麻烦
3.算好字体一行显示几个五行的时候加展开全部,点击的时候我们在
把Tesxtview设置setLine很多行
4.当时候我我想过这几种都感觉麻烦,估计小伙伴也有这样的想法
后来我想到一个办法,就是用俩个textview隐藏显示,然后在配合
SpannableString跟ClickableSpan这些还可以个textview做下划线之类我相信大家百度都可以搜索怎么用之类,我说这个是让大家有碰到这个效果的时候知道怎么解决,有个方法,方向。
下面是代码:
private String agreementHead;
private String agreementHead2;
private String agreementEnd = "展开全部";
private String agreementEnd2 = "收起";
private String boorowerTitle;
private void setTextDate(String agreementHead) {
tv_loveproject_sayname2.setVisibility(View.GONE);
tv_loveproject_sayname.setVisibility(View.VISIBLE);
tv_loveproject_sayname.setText("");
String boorower = borrower_info.getBorrowdescription();
if (boorower.length()>130){
boorowerTitle = boorower.substring(0, 123);//borrower_info.getBorrowdescription()
agreementHead = boorowerTitle + "...";
}else {
boorowerTitle=boorower;
}
SpannableString spanAgreementHead = new SpannableString(agreementHead);
SpannableString spanAgreementEnd = new SpannableString(agreementEnd);
ClickableSpan my_clickableSpan1 = new My_ClickableSpan(this, agreementHead);
ClickableSpan my_clickableSpan2 = new My_ClickableSpan(this, agreementEnd);
spanAgreementHead.setSpan(my_clickableSpan1, 0, agreementHead.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
spanAgreementEnd.setSpan(my_clickableSpan2, 0, agreementEnd.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
tv_loveproject_sayname.append(spanAgreementHead);
tv_loveproject_sayname.append(spanAgreementEnd);
tv_loveproject_sayname.setMovementMethod(LinkMovementMethod.getInstance());
tv_loveproject_sayname.setHighlightColor(Color.TRANSPARENT); //设置点击后的颜色为透明
}
public class My_ClickableSpan extends ClickableSpan {
private String content;
private Context context;
public My_ClickableSpan(Context context, String content) {
this.context = context;
this.content = content;
}
@Override
public void onClick(View widget) {
if (content.equals(agreementEnd)) {
//跳转
agreementHead2 = "";
setTextDate2(borrower_info.getBorrowdescription());
}
}
@Override
public void updateDrawState(TextPaint ds) {
if (content.equals(agreementHead)) {
ds.setColor(context.getResources().getColor(R.color.mains_heise));
} else if (content.equals(agreementEnd)) {
ds.setColor(context.getResources().getColor(R.color.lanse));
}
}
}
/**
* 第二个
*/
private void setTextDate2(String agreementHead2) {
tv_loveproject_sayname.setVisibility(View.GONE);
tv_loveproject_sayname2.setVisibility(View.VISIBLE);
tv_loveproject_sayname2.setText("");
SpannableString spanAgreementHead = new SpannableString(agreementHead2);
SpannableString spanAgreementEnd = new SpannableString(agreementEnd2);
ClickableSpan my_clickableSpan1 = new My_ClickableSpan2(this, agreementHead2);
ClickableSpan my_clickableSpan2 = new My_ClickableSpan2(this, agreementEnd2);
spanAgreementHead.setSpan(my_clickableSpan1, 0, agreementHead2.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
spanAgreementEnd.setSpan(my_clickableSpan2, 0, agreementEnd2.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
tv_loveproject_sayname2.append(spanAgreementHead);
tv_loveproject_sayname2.append(spanAgreementEnd);
tv_loveproject_sayname2.setMovementMethod(LinkMovementMethod.getInstance());
tv_loveproject_sayname2.setHighlightColor(Color.TRANSPARENT); //设置点击后的颜色为透明
}
public class My_ClickableSpan2 extends ClickableSpan {
private String content;
private Context context;
public My_ClickableSpan2(Context context, String content) {
this.context = context;
this.content = content;
}
@Override
public void onClick(View widget) {
if (content.equals(agreementEnd2)) {
//跳转
agreementHead = "";
setTextDate(borrower_info.getBorrowdescription());
}
}
@Override
public void updateDrawState(TextPaint ds) {
if (content.equals(agreementHead2)) {
ds.setColor(context.getResources().getColor(R.color.mains_heise));
} else if (content.equals(agreementEnd2)) {
ds.setColor(context.getResources().getColor(R.color.lanse));
}
}
}
举报