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

TextView 커스텀 사용시에 글자잘림 질문 드립니다.

0 추천

안녕하세요. 항상 많은 도움을 받고있는 학생입니다.

TextView 클래스를 extended 해서 STextView라는 클래스를 만들었습니다.

public void setStroke(boolean bStroke, float fWidth, int iColor) {
		stroke = bStroke;
		strokeWidth = fWidth;
		strokeColor = iColor;
	}

	@Override
	protected void onDraw(Canvas canvas) {
		if(stroke) {
			ColorStateList states = getTextColors();
			getPaint().setStyle(Style.STROKE);
			getPaint().setStrokeWidth(strokeWidth);
			setTextColor(strokeColor);
			super.onDraw(canvas);
			
			getPaint().setStyle(Style.FILL);
			setTextColor(states);
		}
		super.onDraw(canvas);
	}

아마 고수님들은 위 소스를 보시면 제가 뭘 하려고 하시는지 제꺽 알아보실겁니다.

테두리가 있는 텍스트뷰를 만들었거든요 ^^

테두리는 문제없이 잘 생기고있습니다.  그런데 문제는 레이아웃에서

<LinearLayout

layout_width="wrap_content" ...

<com.jimira.STextView

layout_width="wrap_content"

text="WRITER" ...

이렇게 적었는데 WRITER의 W부분 왼쪽이 약간 잘려서 화면에 표시됩니다.

다 잘리는것도 아니고, W 혹은 A 이렇게 일부 글자들만 잘립니다.

어떻게 해결할 방법이 없을까요.. 꼼수라도.. 좀 부탁드리겠습니다.

지미라 (4,330 포인트) 님이 2014년 11월 25일 질문

1개의 답변

0 추천

꼼수로...앞뒤로 문자열 스페이스(빈공간) 하나 넣으면 어떤가요? ㅎㅎㅎ

 

또는  android:padding="10dip"

doridori2013@nate.com

익명사용자 님이 2014년 11월 25일 답변
padding은 적용해봤는데 효과가 없고요..
스페이스 넣는 꼼수도 방법이긴 하지만 그렇게 하면 왼쪽 혹은 오른쪽 여백이 너무 넓어지거든요.. ^^
>>>         http://www.phonesdevelopers.com/1698842/

위 주소를 참고해 보세요

doridori2013@nate.com
그 부분을 제 소스에 어느 부분에 넣어야 하는지 좀 알려주실수 있나요?
위에 첨부된 소스를 한번 살펴봐주세요.

protected void onDraw(Canvas canvas) {
        if(stroke) {
            ColorStateList states = getTextColors();
            getPaint().setStyle(Style.STROKE);
            getPaint().setStrokeWidth(strokeWidth);
            setTextColor(strokeColor);
            super.onDraw(canvas);
           
            getPaint().setStyle(Style.FILL);
            setTextColor(states);
        }
        super.onDraw(canvas);
       
        canvas.save();
         //converts 5dip into pixels            
        int additionalPadding = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 5, getContext().getResources().getDisplayMetrics());

        //subtracts the additional padding from the top of the canvas that textview draws to in order to align it with the top.            
        canvas.translate(additionalPadding, 0);
        
        canvas.restore();
    }

이렇게 해봣는데 효과가 없습니다. 어떻게 이용해야 하는건지...-_-
protected void onDraw(Canvas canvas) {
        if(stroke) {
            ColorStateList states = getTextColors();
            getPaint().setStyle(Style.STROKE);
            getPaint().setStrokeWidth(strokeWidth);
            setTextColor(strokeColor);
                        canvas.translate(10, 0);
            super.onDraw(canvas);
           
            getPaint().setStyle(Style.FILL);
            setTextColor(states);
        }
        super.onDraw(canvas);
}

이렇게 하니까 왼쪽은 잘리지 않는데 오른쪽이 잘립니다. ㅠㅠ
텍스트뷰의 사이즈를 좀 늘려줘야 할거 같은데 어떻게 해야 하는지 혹 방법을 알고계신가요?
텍스트의 사이즈를 줄이지 않고서는 이미 정해진 크기를 오른쪽으로 밀은거라...
당연히 오른쪽으로 벗어나겠지요... 차라리 오른쪽으로 텍스트 1개 글자의 반 정도 밀고 텍스트 한개를 버리시면.. 양쪽이 반반 이쁘게 가지 않을까요?
텍스트 개수를 줄이던가 텍스트 사이즈를 줄이던가 둘중 하나 해야겠져...

doridori2013@nate.com
...