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