Android 에 서 는 TextView 가 고정된 줄 수 를 초과 하여"...모두 펼 치기"를 표시 합 니 다.

머리말
TextView 에 한 줄 만 표시 하고 여러 부분 을 생략 번호 로 대체 하려 면 xml 파일 에 있 는 TextView 컨트롤android:singleLine="true"만 추가 하면 된다 는 것 을 잘 알 고 있 습 니 다.여러 줄 을 표시 하려 면 어떻게 해 야 합 니까?
잔말 말고 효과 도 를 먼저 보 세 요.
펼 치기 전:

펼 친 후:

예제 코드:
도구 종류:

 /**
 *   textView  ...          
 * @param context    
 * @param textView textview
 * @param minLines      
 * @param originText    
 * @param endText     
 * @param endColorID       id
 * @param isExpand          
 */
 public void toggleEllipsize(final Context context,
    final TextView textView,
    final int minLines,
    final String originText,
    final String endText,
    final int endColorID,
    final boolean isExpand) {
 if (TextUtils.isEmpty(originText)) {
  return;
 }
 textView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver
  .OnGlobalLayoutListener() {
  @Override
  public void onGlobalLayout() {
  if (isExpand) {
   textView.setText(originText);
  } else {
   int paddingLeft = textView.getPaddingLeft();
   int paddingRight = textView.getPaddingRight();
   TextPaint paint = textView.getPaint();
   float moreText = textView.getTextSize() * endText.length();
   float availableTextWidth = (textView.getWidth() - paddingLeft - paddingRight) *
    minLines - moreText;
   CharSequence ellipsizeStr = TextUtils.ellipsize(originText, paint,
    availableTextWidth, TextUtils.TruncateAt.END);
   if (ellipsizeStr.length() < originText.length()) {
   CharSequence temp = ellipsizeStr + endText;
   SpannableStringBuilder ssb = new SpannableStringBuilder(temp);
   ssb.setSpan(new ForegroundColorSpan(context.getResources().getColor
     (endColorID)),
    temp.length() - endText.length(), temp.length(),    Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
   textView.setText(ssb);
   } else {
   textView.setText(originText);
   }
  }
  if (Build.VERSION.SDK_INT >= 16) {
   textView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
  } else {
   textView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
  }
  }
 });
 }
사용 이 비교적 간단 하고 매개 변수 목록 에 설명 이 있 습 니 다.
예:

boolean isExpandDescripe = false;//        false,    ;
Onclick() {
...
  //  textView      :
  case R.id.tv_info_node_describe:
  if (isExpandDescripe) {
   isExpandDescripe = false;
   tv_info_node_describe.setMaxLines(2);//   
  } else {
   isExpandDescripe = true;
   tv_info_node_describe.setMaxLines(Integer.MAX_VALUE);//   
  }
  textViewSpanUtil.toggleEllipsize(context,
   tv_info_node_describe, 2,
   text,
   "    ",
R.color.gray_discovery_ababab, isExpandDescripe);
  break;
...
}
총결산
이상 은 이 글 의 전체 내용 입 니 다.본 논문 의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가치 가 있 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주 셔 서 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기