2010-11-23 2 views
2

내 앱이 텍스트가 무겁다 고 말하지는 않겠지 만 가끔씩 다른 문자열보다 긴 임의의 문자열을 표시합니다. 그들은 내 드로이드 2에 잘 맞았지 만, 작은 드로이드에서도 같은 것을 표시하지 않을 것입니다. 누구든지 모든 안드로이드에서 작동하도록 다른 크기의 텍스트를 포맷하는 적절한 방법을 알고 있습니까?텍스트 서식 지정에 dip, dp, sip 또는 sp를 사용해야합니까?

+1

작업을 정의하십시오. 모든 드로이드에서 작동합니다.단지 표시 방법에 달려 있습니다. – Falmarri

답변

6

을 ellipsize : 나도 그들 중

<TextView ... android:textAppearance="?android:attr/textAppearanceMedium" /> 
<TextView ... android:textAppearance="?android:attr/textAppearanceLarge" /> 
<TextView ... android:textAppearance="?android:attr/textAppearanceSmall" /> 

기본입니다, 기본값 :

<TextView ... android:textAppearance="?android:attr/textAppearance" /> 

물론 다른보기뿐만 아니라 TextView에도 적용 할 수 있습니다.

3

텍스트 크기에 sp를 사용하는 것이 좋습니다. 사용하는 레이아웃은 작동해야하므로 레이아웃이 확장 될 때 가능한 한 모든 크기에서 작동합니다 (다른 크기의 화면에 대한 레이아웃이 필요할 수 있습니다). 텍스트가 맞지 않을 수 있다면, 포장 또는 당신이 안드로이드에서 제공하는 기본 스타일 사용을 선호 할 몇 가지 텍스트를 크게 또는 작게 할 경우

0

SP 및 DP가 예상대로 작동하지 않는 것 같습니다. DP는 "디스플레이 독립적"이고 SP는 동일하게 설명됩니다. (아마도 "줌"명령에 의해) 스케일 될 수 있습니다. 그러나 예상대로 작동하지 않습니다.

예를 들어 320x480 휴대 전화와 Nexus의 두 가지 기기가 있습니다. 이것은 800x1280이지만 sw600으로 묘사됩니다 (이유는 모르겠습니다). 무슨 일이 있었는지 알기 위해 60 'X'문자로 구성된 내보기에 텍스트보기를 추가했습니다.이 문자는 고정 폭 글꼴과 같은 모양으로 표시되기 때문에 선택되었습니다.

textView textSize가 10dp로 설정되었으며이 중 60 개가 Nexus 화면을 완전히 채 웁니다. 그러나 전화에서 정확히 동일한 크기로 나타나며 거의 두 줄을 형성합니다.

그래서 DP가 디스플레이 독립적 인 것으로 보입니다. 단지 각 문자가 최대로 주어질 픽셀의 (대략적인) 수를 설명합니다. SP에서 차원을 정의해도 아무런 차이가 없습니다.

이것은별로 도움이되지 않습니다. 휴대 전화에서 적절한 크기를 선택할 수있을 것으로 기대했는데, Nexus에 맞게 크기가 조정됩니다.

예를 들어, 텍스트 줄의 길이가 약 30 자이고 화면 전체에 전체 줄을 채우고 싶다면 10dp로 정의합니다. 각 dp는 한 픽셀 (약)이됩니다. 그런 다음 Nexus에서 그려지면 각 dp는 두 픽셀이되고 크기의 두 배로 표시됩니다.

이것은 내가 할 수있는 한 작동하지 않습니다. 그것은 그것을 꽤 쓸모 없게 만든다.

내 유일한 해결책, 그것은 단지 dimens.xml 파일에서 치수를 사용하고, 그 중 여섯 공통 폭 (각 하나를 가지고하는 것입니다, 우아한 일이 아니다 240320480600720800 - 높은 아무것도 정렬 할 수 있습니다 자체 코드)를 작성한 다음 Nexus에 맞게 코드를 디자인하고 필자가 작성한 스프레드 시트를 사용하여 일반적인 너비에 대해 dimens.xml의 값을 조정합니다. 고통입니다. 그러나 그것은 효과적이다.

잘못 사용하지 않으면 안드로이드 시스템이 고장났습니다.

관련 문제