java基础一些算法(第三篇)

图片描述
展开全部的时候展开所有。这个效果大家有什么想法。
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));
        }

    }
}
收藏
分享到:
举报
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值