判断文字是否超长的方法
public static void showOrHideContent(TextView content,TextView btn,int maxLines,String btntext){
Layout layout = content.getLayout();
if (layout != null) {
int lineCount = layout.getLineCount();
if (lineCount > maxLines) {
btn.setText(btntext);
btn.setVisibility(View.VISIBLE);
} else {
int ellipsisCount = layout.getEllipsisCount(lineCount - 1);//小米note2下返回0
if (ellipsisCount > 0) {
btn.setVisibility(View.VISIBLE);
} else {
btn.setVisibility(View.GONE);
}
}
} else {
ViewTreeObserver observer = content.getViewTreeObserver();
if (observer.isAlive()) {
observer.addOnPreDrawListener(
new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
Layout layout = content.getLayout();
if (layout != null) {
int lineCount = layout.getLineCount();
if (lineCount > maxLines) {//小米note2的兼容处理
btn.setVisibility(View.VISIBLE);
} else {
int ellipsisCount = layout.getEllipsisCount(lineCount - 1);//小米note2下返回0
if (ellipsisCount > 0) {
btn.setVisibility(View.VISIBLE);
} else {
btn.setVisibility(View.GONE);
}
}
}
try {
(content.getViewTreeObserver()).removeOnPreDrawListener(this);
} catch (Exception e) {
e.printStackTrace();
}
return true;
}
}
);
}
}
}
调用方式:
content为现实内容的textview,btn为展开或者收起的按钮,5为textview最大显示行数
StringUtils.showOrHideContent(content,btn,5,"查看全文");
btn的监听事件:
btn.setOnClickListener(v -> {
if(!isAll){
content.setMaxHeight(getResources().getDisplayMetrics().heightPixels);
btn.setText("收起");
isAll = true;
}else{
content.setMaxLines(5);
btn.setText("查看全部");
isAll = false;
}
});
xml文件:
<TextView
android:id="@+id/content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/name"
android:layout_below="@+id/name"
android:layout_marginRight="@dimen/app_margin"
android:layout_marginTop="13sp"
android:ellipsize="end"
android:maxLines="5"
android:text="赡养费的给附表转是多少赡养费的给附表转是多少赡养费的给附表转是多少赡养费的给附表转是多少赡养费的给附表转是多少赡养费的给附表转是多少赡养费的给附表转是多少赡养费的给附表转是多少赡养费的给附表转是多少赡养费的给附表转是多少赡养费的给附表转是多少"
android:textColor="@color/black"
android:textSize="15sp" />
本文介绍了一种在Android中判断文本是否超长并控制显示的方法。通过TextView组件的布局属性,可以实现在文本过长时显示“查看全文”按钮,并通过按钮切换文本的完全显示或折叠状态。
2392

被折叠的 条评论
为什么被折叠?



