마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

getTextBounds에 대한 픽셀 크기 질문입니다.

0 추천
안녕하세요? 안드로이드 초급 입문자입니다.

다름이 아니라 텍스트뷰 내부에 들어 갈 수 있는 문자열의 평균 개수(한글,영어,숫자모두포함)를 얻기 위해getTextBounds(text, start, end, bounds); 를 하여 bounds를 통해

float bw = bounds.width();

float bh = bounds.height();

로 텍스트 내부의 유효 문자 가로 세로 크기를 받아왔습니다.

반환되는 값은 px크기로 알고 있습니다.

그런데 472x32(px) textView에 문자를 넣고 값을 반환했더니

bw=935.0 / bh = 60이 나왔습니다. 텍스트뷰 내부에 문자가 빠짐없이 들어갔는데 px로 반환되는 값이 텍스트뷰 사이즈보다 큽니다.. 이 값을 어떻게 해석해야 하는 걸까요? 고수님들 답변 부탁드립니다. 아래는 소스의 일부 입니다. 혹시 반환되는값이 px가 아닌가요? 아니라면 어떤 단위인가요?

tv1.setText("zzzzzzzzzz ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ 1111111111");

@Override
    public void onWindowFocusChanged(boolean hasFocus) {
         float width1 = tv1.getWidth();
         float height1 = tv1.getHeight();
         float fsize = tv1.getTextSize();
        
         Paint p = new Paint();
         Rect bounds = new Rect();
         p.setTextSize(60);

         p.getTextBounds(tv1.toString(), 0, tv1.length(), bounds);
         float bw = bounds.width();
         float bh = bounds.height();

//textSize의 값 구하고 변환하기
         tv3.setText("textSize = " + String.valueOf(String.format("%.1f", fsize))+       "px, " + String.valueOf(String.format("%.1f", fsize/1.5))+"sp");

         //textView에 들어 갈 수 있는 문자열 개수 구하기
         tv4.setText("MainTextView에 들어갈 수 있는 글자 수는 : " +
         String.valueOf(String.format("%.1f",bw)+"////"+tv1.length()+"/////"+bh));
실습위주 (430 포인트) 님이 2014년 7월 16일 질문
실습위주님이 2014년 7월 16일 수정

1개의 답변

+1 추천
 
채택된 답변
올리신 코드는 tv1.toString() 문자열의 그려지는 영역 크기를 구합니다.

그 영역이 tv1 텍스트뷰의 영역에 포함되느냐 벗어나느냐는 별개의 문제입니다.

텍스트뷰의 영역안에 포함되는지를 검사하려면 직접 한글자씩 영역을 계산해서 비교해야 합니다.
익명사용자 님이 2014년 7월 16일 답변
실습위주님이 2014년 7월 16일 채택됨
그렇다면 tv1.setText("문자");가 아닌
String str1 = "가";
String str2 = "a";
String str3 = "1";
로 값을 구한 뒤 textView의 width와 비교해야 하는 건가요?
텍스트뷰의 내부에 들어갈 수 있는 텍스트의 개수를 구하려는 것 같은데, 이런걸 하려면 한글자씩 비교하면서 개수를 구해야 합니다.
괜찮으시다면 샘플한번 알려주실 수 있으실까요..?
아무리봐도 잘 모르겠습니다..
초보에게 넓은 아량 한번 베풀어주세요..
...