我有自定义列表视图。要求是,如果任何行的文本超过两行,则只显示两行,并在文本上方显示更多按钮,当用户单击更多按钮时,它应显示所有行内容,无论是3行还是4行。我搜索各种博客但无法获得解决方案。任何人都可以帮助我吗? 使用以下代码获取文本行:
ViewTreeObserver vto = msg.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
Layout l = msg.getLayout();
if ( l != null){
int lines = l.getLineCount();
if ( lines > 0)
if ( l.getEllipsisCount(lines-1) > 0){
txtMore.setVisibility(View.VISIBLE); msg.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
}
}
});
但问题是,当列表超出可见区域时,不会显示更多按钮。
答案 0 :(得分:0)
使用onGlobalLayoutListner,没有调用隐藏列表项。 当使用以下代码时,它已经有效了。
ViewTreeObserver vto = msg.getViewTreeObserver();
vto.addOnPreDrawListener(new OnPreDrawListener() {
@Override
public boolean onPreDraw() {
// TODO Auto-generated method stub
Layout l = msg.getLayout();
if ( l != null){
int lines = l.getLineCount();
if ( lines > 0)
if ( l.getEllipsisCount(lines-1) > 0){
txtMore.setVisibility(View.VISIBLE); msg.getViewTreeObserver().removeGlobalOnLayoutListener(this);
}
}
return true;
}
});