안 드 로 이 드 SpannableString 여러 줄 의 그림 과 글 이 혼 합 된 응용 실전 을 상세 하 게 설명 합 니 다.

TeXtView 는 모두 낯 설 지 않 을 것 입 니 다.텍스트 전시 컨트롤 이 잖 아 요!TextView 로 보편적 인 텍스트 를 표시 합 니 다.OK,간단 합 니 다.Android 입문 자 는 모두 할 수 있 습 니 다.입문 하지 않 은 사람 은 문틈 밖에서 두 눈 을 봐 도 됩 니 다.하하,농담 입 니 다.그렇다면 개발 수요 에 위 챗 채 팅 표정 처럼 TextView 에 이모 티 콘 을 삽입 하도록 설계 했다 면?어떤 친구 들 은"TextView 에 그림 을 추가 할 줄 알 아 요.drawableLeft,drawableRight 잖 아 요!"라 고 말한다.네~좋 습 니 다.한 가지 방법 이 라 고 할 수 있 습 니 다.그런데 이것 은 제한 이 있 습 니 다.먼저 그림 은 TextView 의 양 끝 에 만 있 고 그 다음 에 양 끝 에 한 장의 그림 만 설정 할 수 있 습 니 다.그림 이 텍스트 중간 에 있다 면?어 쩔 수 없 겠 지,네가 SpannableString 을 사용 할 줄 안다 면 이 문 제 는 해결 하기 어렵 지 않 을 거 야,그야말로 Just So So.
따라서 당신 이 상기 문제 에 시 달리 고 있 든 없 든 간 에 아직 겪 지 못 했 든 간 에 이 짧 은 글 을 자세히 읽 어 보 세 요.상기 디자인 수 요 를 쉽게 실현 할 수 있 을 뿐만 아니 라 다른 멋 진 효 과 를 얻 을 수 있 으 며 현재 당신 이 겪 고 있 는 문 제 를 해결 하 는 데 도움 이 될 수 있 습 니 다.
우선 이 효과 도 를 살 펴 보 겠 습 니 다.그림 에 이 그림 을 올 리 는 것 이 어떻게 실현 되 는 지 주의 하 시 겠 습 니까?물론 당신 도 그의 클릭 사건 을 설정 할 수 있 습 니 다.예 를 들 어 동 영상 이나 다른 유형 이 있 으 면 우 리 는 소 개 를 많이 하지 않 고 프로젝트 의 구체 적 인 수 요 를 보면 됩 니 다.
효과 도

한 줄 에 관련 이 있다 면 텍스트 뒤에 imageview 만 추가 하면 됩 니 다.하지만 여러 줄 로 표시 하면 이렇게 하 는 것 은 좋 지 않 습 니 다.
그럼 SpannableString 은 무엇 일 까요?
SpannableString 은 사실 String 과 마찬가지 로 문자열 형식 입 니 다.마찬가지 로 TextView 도 SpannableString 을 디 스 플레이 텍스트 로 직접 설정 할 수 있 습 니 다.다른 것 은 SpannableString 은 그 방법 을 사용 하여 setSpan 방법 으로 문자열 의 다양한 스타일 을 표시 할 수 있 습 니 다.중요 한 것 은 설정 할 수 있 는 구간 을 지정 할 수 있 습 니 다.다음 구간 의 하위 문자열 설정 형식 을 문자열 에 지정 하 는 것 입 니 다.
setSpan(Object what,int start,int end,int flags)방법 은 사용자 가 네 개의 인 자 를 입력 해 야 합 니 다.what 는 설정 한 형식 이 무엇 인지,전경 색 일 수도 있 고 배경 색 일 수도 있 으 며 클릭 할 수 있 는 텍스트 일 수도 있 습 니 다.start 는 형식 을 설정 해 야 하 는 하위 문자열 의 시작 하 표를 표시 합 니 다.같은 이치 end 는 끝 하 표를 표시 합 니 다.flags 는 하나의 표지 로 모두 다음 과 같은 네 가지 속성 이 있 습 니 다.
  • Spanned.SPAN_INCLUSIVE_EXCLUSIVE 는 시작 에서 끝 까지 표 시 됩 니 다.시작 하 표 는 다음 을 포함 하지 않 습 니 다
  • Spanned.SPAN_INCLUSIVE_INCLUSIVE 는 시작 에서 끝 까지 표 시 를 하 는 동시에 시작 아래 표 와 끝 아래 표 시 를 포함 하고 앞 뒤 는
  • 를 포함한다.
  • Spanned.SPAN_EXCLUSIVE_EXCLUSIVE 는 처음부터 끝까지 표시 하지만 시작 아래 와 끝 아래 는 포함 되 지 않 습 니 다
  • Spanned.SPAN_EXCLUSIVE_INCLUSIVE 는 처음부터 끝까지 표시 합 니 다
  • .
    여기까지.코드 에서 이 효 과 를 어떻게 실현 하 는 지 볼 까요?
    
    String title = MapUtil.getValueStr(datas.get(position), "Title");
       try {
        title = java.net.URLDecoder.decode(title, "utf-8");
       } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
       }
       //    
       Drawable drawable = getResources().getDrawable(R.mipmap.icon_top);
        drawable.setBounds(0,0,drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());//         int   ,                   
       ImageSpan is = new ImageSpan(drawable);
       String space = " ";
       title = title + space;
       int strLength = title.length();
       SpannableString ss = new SpannableString(title);
       ss .setSpan(is,strLength-1, strLength, Spannable.SPAN_INCLUSIVE_EXCLUSIVE);
    
       if ("1".equals(TopFlag)) { //    
        viewHolder.title.setText(ss.subSequence(0,strLength));
       } else {
        viewHolder.title.setText(title);
       }
    
    
    인터페이스 에서 돌아 오 는 title 을 가 져 온 후,우리 가 필요 로 하 는 그림 을 Drawable drawable=getResources().getDrawable(R.mipmap.icontop);
    drawable.setBounds(0,0,drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight());//여기 서 두 분 은 int 류 인 자 를 입력 하지 마 세 요.그렇지 않 으 면 대형 스크린 핸드폰 에 고 르 지 않 은 상황 이 나타 날 수 있 습 니 다.
    그림 을 가 져 온 후 원 하 는 크기 와 위 치 를 설정 하면 이 효 과 를 쉽게 실현 할 수 있다.
    이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

    좋은 웹페이지 즐겨찾기