2014-06-20 69 views
2

嘿,我知道有很多與這個主題有關的問題,我只需要一些澄清。針對不同屏幕的Android文字大小

我試圖讓我的應用在所有設備尺寸上看起來都差不多。我使用'sp'作爲「textSize」的值類型,但它似乎沒有做任何事情。它在ldpi和hdpi屏幕尺寸上看起來太大,在mdpi和xxhdpi上太小。它看起來像我希望它看起來在hdpi和xhdpi屏幕上。

我在AndroidManifest文件中啓用了「屏幕支持」。我遇到的問題是值文件夾。

這是目前我有什麼有: (我還沒有做出我自己的任何修改文件夾結構,我所知道的)

res 
-Values 
--dimens.xml 
--styles.xml 
--strings.xml 
-Values-v11 
--styles.xml 
-Values-v14 
--styles.xml 
-Values-w820dp 
--dimens.xml 

難道我只是做一個新值文件夾ldpi,hdpi,xhdpi,xxhdpi等?然後爲每個創建一個新的dimens.xml文件?那之後呢?

這是我的AndroidManifest.xml文件(最小化應用標籤):

<?xml version="1.0" encoding="utf-8"?> 
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="com.suckatprogramming.coach" 
     android:versionCode="1" 
     android:versionName="1.0" > 

     <supports-screens android:resizeable="true" 
          android:smallScreens="true" 
          android:normalScreens="true" 
          android:largeScreens="true" 
          android:anyDensity="true" /> 

     <uses-sdk 
      android:minSdkVersion="14" 
      android:targetSdkVersion="19" /> 

     <application... /> 

    </manifest> 

我使用的LinearLayout如果這意味着什麼。讓我知道你是否需要別的東西。感謝您提供的任何幫助。

+0

你解決了你的問題嗎? – OnePunchMan

回答

0

我不知道我是否可以得到這個問題,但你可以嘗試用相當大的尺寸this.Starting在textvew並減少它的文字,直到它符合..

`

public static void setTextSizeToFitTextView(TextView tv) 



    /* 
    * Resize the text size with specified width and height 
    * @param width 
    * @param height 
    */ 

    int height = tv.getHeight(); 
    int width = tv.getWidth(); 
    float mTextSize = tv.getTextSize(); 
    CharSequence text = tv.getText(); 
    // Do not resize if the view does not have dimensions or there is no 
    // text 
    if (text == null || text.length() == 0 || height <= 0 || width <= 0 
      || mTextSize == 0) { 
     return; 
    } 

    // Get the text view's paint object 
    TextPaint textPaint = tv.getPaint(); 

    float targetTextSize = 50.0f; 

    // Get the required text height 
    int textHeight = getTextHeight(text, textPaint, width, targetTextSize); 

    // Until we either fit within our text view or we had reached our min 
    // text size, incrementally try smaller sizes 

    while (textHeight >= height) { 
     targetTextSize = targetTextSize - 2; 
     textHeight = getTextHeight(text, textPaint, width, targetTextSize); 
    } 
    tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, targetTextSize); 
    // textPaint.setTextSize(targetTextSize); 
} 

// Set the text size of the text paint object and use a static layout to 
// render text off screen before measuring 
private static int getTextHeight(CharSequence source, 
     TextPaint originalPaint, int width, float textSize) { 
    // Update the text paint object 
    TextPaint paint = new TextPaint(originalPaint); 
    paint.setTextSize(textSize); 
    // Measure using a static layout 
    StaticLayout layout = new StaticLayout(source, paint, width, 
      Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); 
    return layout.getHeight(); 
}`