如何在Android中修改textview的ReadMore选项时修改滚动视图的高度?

如何在Android中修改textview的ReadMore选项时修改滚动视图的高度?,android,Android,我实现了在文本视图的末尾添加“…多读”和“…少读”。当我点击read more滚动视图时,高度将增加,但当我点击文本视图末尾的less时,我想减少/减少滚动视图的高度。如何管理滚动视图高度单击阅读更多选项 这是我的ExpandableTextView代码 public class ExpandableTextView extends TextView { private static final int DEFAULT_TRIM_LENGTH = 100; private sta

我实现了在文本视图的末尾添加“…多读”“…少读”。当我点击read more滚动视图时,高度将增加,但当我点击文本视图末尾的less时,我想减少/减少滚动视图的高度。如何管理滚动视图高度单击阅读更多选项

这是我的ExpandableTextView代码

public class ExpandableTextView extends TextView {
    private static final int DEFAULT_TRIM_LENGTH = 100;
    private static final String ELLIPSIS = " .....Read More";

    private CharSequence originalText;
    private CharSequence trimmedText;
    private BufferType bufferType;
    private boolean trim = true;
    private int trimLength;

    public ExpandableTextView(Context context) {
        this(context, null);
    }

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

        TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.ExpandableTextView);
        this.trimLength = typedArray.getInt(R.styleable.ExpandableTextView_trimLength, DEFAULT_TRIM_LENGTH);
        typedArray.recycle();

        setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                trim = !trim;
                setText();
                requestFocusFromTouch();


               // if click on read more trim is false
                if (trim == false)
                {
                    Log.e("", " trim=" + trim);
                }
                // if click on less trim is false
                else if (trim == true) {
                    Log.e("", " trim=" + trim);
                }
            }
        });
    }


    private void setText() {
        super.setText(getDisplayableText(), bufferType);

    }

    private CharSequence getDisplayableText() {

        return trim ? trimmedText : originalText;

    }

    @Override
    public void setText(CharSequence text, BufferType type)
    {

        originalText = text;
        trimmedText = getTrimmedText(text);
        Log.e(""," trimmedText ="+ trimmedText );
        bufferType = type;
        setText();
    }

    private CharSequence getTrimmedText(CharSequence text)
    {
        if (originalText != null && originalText.length() > trimLength)
        {

            return new SpannableStringBuilder(originalText, 0, trimLength + 1).append(ELLIPSIS);
        }
        else
        {

            return originalText;
        }
    }

    public CharSequence getOriginalText()
    {
        return originalText;
    }

    public void setTrimLength(int trimLength)
    {

        this.trimLength = trimLength;
        trimmedText = getTrimmedText(originalText);
        setText();
    }

    public int getTrimLength()
    {

        return trimLength;
    }
}
这是我的活动代码

 ExpandableTextView txtRemark = (ExpandableTextView)findViewById(R.id.expandable_text);
        int strRemarkLength = strRemark.length();
        if(strRemarkLength > 100)
        {
            txtRemark.setText(strRemark.concat(" ...Less"));
            Log.e("", " Lesss !!!");

            RelativeLayout.LayoutParams scrollViewParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, 350);
            scrollViewParams.addRule(RelativeLayout.BELOW, txtInspectorname.getId());
            scrollViewParams.addRule(RelativeLayout.RIGHT_OF, relativeLayout.getId());

            scrollView.setFillViewport(true);
            scrollView.setBackgroundColor(Color.parseColor("#00000000"));
            scrollView.setScrollContainer(false);
            scrollView.setLayoutParams(scrollViewParams);

        }
        else
        {
            txtRemark.setText(strRemark);
            Log.e("", "Not Lesss !!!");

            RelativeLayout.LayoutParams scrollViewParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.FILL_PARENT, 100);
            scrollViewParams.addRule(RelativeLayout.BELOW, txtInspectorname.getId());
            scrollViewParams.addRule(RelativeLayout.RIGHT_OF, relativeLayout.getId());

            scrollView.setFillViewport(true);
            scrollView.setBackgroundColor(Color.parseColor("#00000000"));
            scrollView.setScrollContainer(false);
            scrollView.setLayoutParams(scrollViewParams);

        }

我不认为有理由编写自己的Textview来实现Textview的readmore future,而您可以通过编程方式设置Textview的最大行来轻松实现它。使用android Textview并在Textview下方添加另一个Textview for readmore。例如,假设您的txtRemark文本视图下面有一个tvReadMore文本视图。首先检查TXTREARK textview的文本是否足以显示tvReadMore。如果是,请将TXTMark的最大行设置为Integer.MAX_值。看看下面的示例代码

if(strRemark.length() > 100) { //assuming you want to show the [Read more] for more than 100 characters
   if(tvReadMore.getText().toString().equalsIgnoreCase("Read more")) { //you should set the text of tvReadMore textview to [Read more] in the beginning
       txtRemark.setMaxLines(Integer.MAX_VALUE); //set the maximum line to Maximum integer
       tvReadMore.setText("Show Less")
   } else {
        txtRemark.setMaxLines(3); //set the maximum line to 3
        tvReadMore.setText("Read more")
   }
} else { //if there are no enough characters to show the read more text
   tvReadMore.setVisibility(View.GONE); //hide the read more textview
}
我已经看到了很多为textview实现更多阅读功能的变通方法,但在我看来,这是迄今为止最简单的方法。这一点的好处是,它既适用于简单的textview,也适用于recyclerview中的textview。 如果要在文本末尾添加三个点,当隐藏更多行时,可以添加

 android::ellipsize(end)

我不认为有理由编写自己的文本视图来实现文本视图的readmore future,而您可以通过编程方式设置文本视图的最大行来轻松实现它。使用android Textview并在Textview下方添加另一个Textview for readmore。例如,假设您的txtRemark文本视图下面有一个tvReadMore文本视图。首先检查TXTREARK textview的文本是否足以显示tvReadMore。如果是,请将TXTMark的最大行设置为Integer.MAX_值。看看下面的示例代码

if(strRemark.length() > 100) { //assuming you want to show the [Read more] for more than 100 characters
   if(tvReadMore.getText().toString().equalsIgnoreCase("Read more")) { //you should set the text of tvReadMore textview to [Read more] in the beginning
       txtRemark.setMaxLines(Integer.MAX_VALUE); //set the maximum line to Maximum integer
       tvReadMore.setText("Show Less")
   } else {
        txtRemark.setMaxLines(3); //set the maximum line to 3
        tvReadMore.setText("Read more")
   }
} else { //if there are no enough characters to show the read more text
   tvReadMore.setVisibility(View.GONE); //hide the read more textview
}
我已经看到了很多为textview实现更多阅读功能的变通方法,但在我看来,这是迄今为止最简单的方法。这一点的好处是,它既适用于简单的textview,也适用于recyclerview中的textview。 如果要在文本末尾添加三个点,当隐藏更多行时,可以添加

 android::ellipsize(end)
到您的电视标题文本视图。

打开查看查看查看查看