2014-09-21 10 views
0

我有一个自定义列表视图。要求是,如果任何行的文本超过两行,则只显示两行,并在文本上方显示更多按钮,并且当用户单击更多按钮时,应该显示所有行的内容,无论3或4行在哪里。我搜索各种博客,但无法获得解决方案。任何人都可以帮助我吗? 为了得到使用下面的代码的文本行:Android - 如果行超过两行,则在列表行中显示更多按钮

   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

使用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; 
     } 
    }); 
相关问题