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

안드로이드 텍스트뷰 심각한 오류 해결방법 질문드립니다.

0 추천

어제는 제가 구현을 했던 Stroke를 구현한 커스텀 텍스트뷰에 문제가 있는것 같아서 질문을 드렸었는데

http://www.masterqna.com/android/37152/textview-%EC%BB%A4%EC%8A%A4%ED%85%80-%EC%82%AC%EC%9A%A9%EC%8B%9C%EC%97%90-%EA%B8%80%EC%9E%90%EC%9E%98%EB%A6%BC-%EC%A7%88%EB%AC%B8-%EB%93%9C%EB%A6%BD%EB%8B%88%EB%8B%A4

오늘 다시 확인해본 결과 원래 안드로이드 텍스트 뷰 자체에 오류가 있는것 같습니다.

<LinearLayout 
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:orientation="vertical">
        <TextView
	        android:layout_width="wrap_content"
	        android:layout_height="wrap_content"
	        android:textSize="40dp"
	        android:textColor="#ffffff"
	        android:text="ABC"
	        android:shadowRadius="6.0"
	        android:shadowColor="#000000"/>
    </LinearLayout>

XML을 위와 같이 구성을 했는데, 화면에 출력되는것을 보니까 Shadow도 잘려서 현시됩니다.

Shadow를 주면 적어도 그 효과가 잘리지 않고 다 보여져야 하는것 아닌가요?

안드로이드는 왜 이런 문제가 자꾸 생기는걸까요?

혹시 저같은 경우를 경험해보신분 있으신가요? 이것때문에 이틀동안 고민입니다.

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

3개의 답변

0 추천
 
채택된 답변
안드로이드는 그런 문제 말고도 많이 생겨요...

버전마다도 상이할 수 있고 기기마다도...파편화가 좀 있죠..

 

아마 내부적으로 컨텐츠의 넓이를 계산할때 쉐도우는 계산안해서 발생한 문제 같네요.

윗분처럼 명시적으로 텍스트뷰의 넓이를 키우던가 padding 를 줘서 해결하심이 좋을 듯 합니다.
바램 (19,650 포인트) 님이 2014년 11월 26일 답변
지미라님이 2014년 11월 26일 채택됨
텍스트뷰에 패딩을 줘도 안됩니다.
텍스트가 고정된 문자열도 아니고 계속 변하는 부분이라 명시적으로 넓이를 키울수도 없고...어떻게 해결해야 할지 난감하네요....ㅜㅜ.
제가 4.4.2 단말에서 아래와 같이 테스트 해본 결과로는 패딩을 주니 해결이 되었습니다. 패딩은 여백을 주는거라 안될리가 없을텐데 좀 희한하네요..

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="4dp"
            android:textSize="40dp"
            android:textColor="#00FFFF"
            android:text="ABC"
            android:shadowRadius="6.0"
            android:shadowColor="#FF000000"/>
제가 뭔가 삭갈렸었던것 같습니다. 다시 해보니 패딩이 적용이 되더라고요...
그런데 제가 만든 Stroke 텍스트뷰는 여전히 패딩이 적용이 안되고..
일단 일반 텍스트뷰는 패딩이 되는것을 확인했으니까 꼼수를 한번 적용해봐야 할거 같습니다. 답변 감사드립니다.
0 추천
android:layout_height="wrap_content"

대신에

android:layout_height="20dp"

이렇게 사이즈를 직접 줘보세요 폰트 사이즈보다 크게

 

관련 내용:

http://stackoverflow.com/questions/8242005/why-is-my-buttons-text-cut-off

 

doridori2013@nate.com

익명사용자 님이 2014년 11월 26일 답변
항상 답변 주셔서 감사드립니다.
그런데 제가 말씀드린 경우는 위아래가 아니고 좌우로 잘리거든요.
위에 첨부한 XML을 이용해서 간단히 프로젝트를 하나 만들고 직접 보시면 알수 있을겁니다.
–1 추천

플랫폼 탓을 하지마시고 API문서를 읽으세요.

링크한 질문을 읽어보니 TextPaint를 임의로 수정하고 있는데, API문서에는 그러지 말라고 명시적으로 언급되어 있습니다.

익명사용자 님이 2014년 11월 26일 답변
네. 저도 구글링을 해서 찾은 소스라 별로 생각없이 적용을 했었습니다. 참고할께요.
그런데 위에 첨부한 소스에서는 shadow가 왜 잘리죠?
TextPaint를 임의로 수정한것도 아닌데 말입니다. 왜 그런지 그 이유도 알려주실수 있나요? 플랫폼 탓이 아니라면 제가 혹 잘못 코딩한것이라도 있는지...
...