布局首先 因为我这个是列表所以这只是一个항목 <있는 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). } } });