2016-08-10 5 views
0

크기 나는 다음과 같은 레이아웃을 가지고 : 텍스트가 약 차지하게, 위 그림과 같이 20sp하는 텍스트 크기를 설정 내 넥서스 5에서안드로이드 - 텍스트 크기 모든 화면에서 동일한 내 안드로이드 응용 프로그램에서

<android.support.v7.widget.CardView 
     android:id="@+id/difficultyCardView" 
     app:layout_widthPercent="60%" 
     android:layout_height="wrap_content" 
     android:layout_marginTop="8dp" 
     app:cardUseCompatPadding="true" 
     android:layout_centerHorizontal="true" 
     android:layout_above="@+id/noHighScoresCardView"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="@color/yellow" 
      android:orientation="vertical"> 

      <ImageView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center_horizontal" 
       android:layout_marginBottom="10dp" 
       android:src="@drawable/pushpin" /> 

      <TextView 
       android:id="@+id/diffNameTv" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center_horizontal" 
       android:layout_marginBottom="12dp" 
       android:maxLines="1" 
       android:singleLine="true" 
       android:text="FÁCIL" 
       android:textSize="20sp" 
       android:textStyle="bold" /> 

     </LinearLayout> 
    </android.support.v7.widget.CardView> 

을, , CardView 너비의 75 %. 문제는 작은 전화기에서 이것을 테스트 할 때 텍스트에 줄임표가 추가된다는 것입니다.

내가 원하는 것은, 모든 화면 크기와 해상도에서 텍스트가 카드의 75 %를 정확히 차지한다는 것입니다.

그래서이 문제를 해결하고 여러 개의 축척 폴더 (ldpi, mdpi, ...)를 만들고 각각의 글꼴 크기를 조정하거나 코드를 통해 백분율로 계산하거나 다른 해결책을 사용하려면 어떻게해야합니까?

감사합니다.

답변

0

특정 장치의 카드 너비를 가져 와서 .75를 곱한 다음 텍스트 크기를 해당 값으로 설정하십시오.

0

textview가 textviewize의 20 %로 cardview의 75 %를 차지하도록하려면 텍스트가 여러 줄로 흘러 들게하십시오.

android:maxLines="1" 
android:singleLine="true" 

은 필요가 없습니다 이러한 속성을 제거하고 여러

0

에 대한 텍스트 뷰가 텍스트가 항상 동일합니다 수? 그렇다면 솔루션은 매우 간단합니다. 당신이 다음 텍스트에 상관없이 화면 크기가 무엇인지 카드에 비교하지 동일한 상대 크기가됩니다 원하는 위치에 크기가 될 때까지

int ratio = 15; 
int width = difficultyCardView.getWidth(); 
diffNameTv.setTextSize(width/ratio); 

는 비율을 조정합니다.

+0

내 앱이 스페인어와 영어로 모두 현지화되어 있으므로 텍스트가 항상 동일하지는 않습니다. – fergaral

0

응답 레이아웃을 만드는 것입니다. 이렇게하려면 res 디렉토리에 추가 레이아웃 폴더를 만듭니다. 폴더 이름 끝에 픽셀 밀도 이름을 추가하고 대시 (예 : layout-hdpi, layout-mhdpi, layout-xhdpi 등)를 사용하여 텍스트 "layout"과 밀도를 구분합니다.이 폴더 내에서 원하는 레이아웃을 만듭니다 각 밀도에 대해. 그런 다음 픽셀 밀도에 따라 각기 다른 화면 크기의 75 %까지 텍스트 뷰의 크기를 조정할 수 있습니다. 따라서 20sp가 hdpi 레이아웃의 75 %를 채우는 경우 mhdpi가 텍스트 크기를 늘려 카드의 75 %를 채워야 할 수도 있습니다.

Android는 자동으로 화면 크기에 따라 특정 기기의 올바른 레이아웃을 선택합니다.

관련 문제