溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

TextView文本截?cái)嗪箫@示更多按鈕

發(fā)布時(shí)間:2024-08-21 11:09:23 來源:億速云 閱讀:81 作者:小樊 欄目:移動(dòng)開發(fā)

如果想要在TextView文本截?cái)嗪箫@示更多按鈕,可以通過以下方式實(shí)現(xiàn):

  1. 創(chuàng)建一個(gè)自定義的TextView子類,例如ExpandableTextView。
  2. 在ExpandableTextView中添加一個(gè)按鈕(如“更多”按鈕)。
  3. 在ExpandableTextView中重寫setText方法,判斷文本內(nèi)容是否超過一定長度,如果超過則截?cái)辔谋?,并在末尾添加“…更多”提示?/li>
  4. 當(dāng)點(diǎn)擊“更多”按鈕時(shí),展開文本內(nèi)容,顯示完整文本內(nèi)容。

以下是一個(gè)簡單的示例代碼:

public class ExpandableTextView extends TextView {

    private boolean isExpanded = false;
    private String originalText;
    private int maxLines = 2;

    public ExpandableTextView(Context context) {
        super(context);
        init();
    }

    public ExpandableTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public ExpandableTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

    private void init() {
        setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                isExpanded = !isExpanded;
                setText(isExpanded ? originalText : getTrimmedText());
            }
        });
    }

    public void setMaxLines(int maxLines) {
        this.maxLines = maxLines;
    }

    @Override
    public void setText(CharSequence text, BufferType type) {
        originalText = text.toString();
        super.setText(isExpanded ? text : getTrimmedText(), type);
    }

    private CharSequence getTrimmedText() {
        Layout layout = getLayout();
        if (layout != null && layout.getLineCount() > maxLines) {
            int ellipsisCount = layout.getEllipsisCount(maxLines - 1);
            int start = layout.getLineStart(0);
            int end = layout.getLineEnd(maxLines - 1) - ellipsisCount;
            return originalText.substring(start, end) + " ...更多";
        }
        return originalText;
    }
}

使用該ExpandableTextView的示例代碼:

ExpandableTextView expandableTextView = findViewById(R.id.expandableTextView);
expandableTextView.setText("這是一段很長的文本內(nèi)容,當(dāng)超過指定行數(shù)時(shí)會(huì)被截?cái)?,點(diǎn)擊更多按鈕可以展開完整內(nèi)容。");

通過以上方法,可以實(shí)現(xiàn)在TextView文本截?cái)嗪箫@示更多按鈕的效果。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI