텍스트 뷰 표시 한 후 과잉의 세 줄은 숨겨진 표시하려면 버튼을 클릭

布局首先
因为我这个是列表所以这只是一个항목 
<있는 LinearLayout 용의 xmlns : 로이드 = "http://schemas.android.com/apk/res/android" 
    로이드 : 방향 = "수직"로이드 : layout_width = "match_parent" 
    로이드 : layout_height = "match_parent"> 

    <RelativeLayout의 
        로이드 : layout_marginBottom = "10dp" 
        로이드 : layout_width = "match_parent" 
        로이드 : layout_height = "wrap_content" 
        로이드 : layout_marginLeft = "25dp" 
        로이드 : layout_marginRight = "25dp" 
        로이드 : 배경 = "@ 그리기 / rounded_box "> 

        <텍스트 뷰 
            로이드 : ID ="@ + ID / tv_date "
            안드로이드 : layout_width = "match_parent" 
            안드로이드 : layout_height = "wrap_content"
            안드로이드 : layout_marginLeft = "17dp" 
            안드로이드 : 텍스트 = "텍스트"
            안드로이드 : layout_marginTop = "8dp" 
            안드로이드 : 텍스트 = "日期" 
            안드로이드 : 텍스트 색상 = "# ff333333" 
            안드로이드 : TEXTSIZE = "13sp"/> 
        <텍스트 뷰 
           //最重要设定显示几行
            안드로이드 : maxLines = "3" 

            안드로이드 : ID = "@ + ID / tv_text" 
            로이드 : layout_width = "wrap_content" 
            로이드 : layout_height = "wrap_content" 
            "ID / tv_date @"layout_below = 로이드 
            로이드 "ID / tv_date @"layout_alignLeft = 
            로이드 : layout_marginTop = "10dp " 
            안드로이드 : layout_marginBottom ="10dp "
            안드로이드 : 텍스트 색상 = "#의 ff333333" 
            안드로이드 : TEXTSIZE = "13sp"/>
        <있는 LinearLayout 
            로이드 : ID = "@ + ID / ll_img" 
            로이드 : layout_marginBottom = "10dp" 
            로이드 : layout_marginLeft = "17dp" 
            로이드 : layout_below = "@ ID / tv_text" 
            로이드 : 방향 = "수평" 
            로이드 : layout_width = "match_parent " 
            로이드 : layout_height ="wrap_content "> 
            <이미지 뷰 
                로이드 : layout_marginRight ="15dp " 
                로이드 : ID ="@ + ID / iv_img1 " 
                로이드 : layout_width ="wrap_content " 
                로이드 : layout_height ="wrap_content "/>layout_height = "wrap_content"/> 
            <이미지 뷰
                안드로이드 : layout_marginRight = "15dp" 
                안드로이드 : ID = "@ + ID / iv_img2"
                로이드 : layout_width = "wrap_content" 
                로이드 : layout_height = "wrap_content"/> 
            <이미지 뷰 
                로이드 : ID = "@ + ID / iv_img3" 
                로이드 : layout_width = "wrap_content" 
                로이드 : layout_height = "wrap_content"/> 
        </있는 LinearLayout> 
        < 이미지 뷰는 
            안드로이드 : ID를 = "@ + ID / iv_more" 
            안드로이드 : 가시성 = "사라" 
            안드로이드 : layout_marginTop = "10dp" 
            안드로이드 : layout_marginBottom = "5dp" 
            안드로이드 : layout_below = "@ + ID / ll_img" @ + ID / ll_img " 
            안드로이드 : layout_centerHorizontal ="true "로
            안드로이드 : SRC = "@ 밉맵 / 더 "
            안드로이드 : layout_width = "17dp"
            안드로이드 : layout_height = "12 DP"/> 
    </를 RelativeLayout의> 
</를있는 LinearLayout> 



// 자바 구현 로직 


// 문자 표시를 분석하거나 숨기이 세 줄을 초과 
    true로 개인 = 부울에서 깃발, 




 ((ViewHolderTitle) 홀더) .tv_text.getViewTreeObserver을 ( ) .addOnGlobalLayoutListener (새로운 새 ViewTreeObserver.OnGlobalLayoutListener () { 
                @Override 
                공개 무효 onGlobalLayout () { 
                    IF (((ViewHolderTitle) 홀더) .tv_text.getLineCount ()> =. 3) { 
                        ((ViewHolderTitle) 홀더) .iv_more.setVisibility (보기 ) .Visible; 
                    }는 다른 { 
                } 
            }); 
                        ((ViewHolderTitle) 홀더) .iv_more.setVisibility (보기.지나간);
                    } 
           ((ViewHolderTitle) 홀더) .iv_more.setOnClickListener (새 새 View.OnClickListener () { 
                @Override 
                공공 무효 온 클릭 (보기보기) { 
                    IF (에서 깃발) { 
                        = false를에 깃발; 
// 위쪽 화살표 이미지 
                        ((ViewHolderTitle) 홀더). iv_more.setImageResource (R.mipmap.more) 
                        ((ViewHolderTitle) 홀더) .tv_text.setEllipsize (NULL); // 확장 
                        ((ViewHolderTitle) 홀더) .tv_text.setMaxLines ( 는 Integer.MAX_VALUE) // 텍스트 뷰 내의 행수 보여 취소 
                        ((ViewHolderTitle) 홀더) .tv_text.setSingleLine ( 거짓); // 이 방법은, 그렇지 않으면 당신은 확장 할 수 없습니다, 설정해야합니다 
                    } 다른 {
                        = TRUE에서 플래그; 
// 아래쪽 화살표 이미지 
                        ((ViewHolderTitle) 홀더)가 .iv_more.setImageResource (R.mipmap.more_open) 
                        ((ViewHolderTitle) 홀더) .tv_text.setEllipsize (TextUtils.TruncateAt.END) // 수축 
                        ( (ViewHolderTitle) 홀더) .tv_text.setMaxLines (3). 
                    } 
                } 
            });

  

추천

출처www.cnblogs.com/wang-jingyuan/p/12174063.html