Android - 如果行超过两行,则在列表行中显示更多按钮

时间:2014-09-21 06:17:46

标签: android-listview expandablelistview

我有自定义列表视图。要求是,如果任何行的文本超过两行,则只显示两行,并在文本上方显示更多按钮,当用户单击更多按钮时,它应显示所有行内容,无论是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);
                              }
                       }  
                    }
                });

但问题是,当列表超出可见区域时,不会显示更多按钮。

1 个答案:

答案 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;
        }
    });
相关问题