2014-10-07 225 views
1

我創建了一個偏好設置(字體大小)。我爲移動設備和平板電腦(自動)定義了多個array.xml。我需要爲我的設置(字體大小)自動設置默認字體大小。在Android中自動更改設置的默認字體大小?

someCode.....getString("lstFontSize", "10"<======);I need set font size automatic. 

回答

1

使用此工作:

public static int resSize = 0; 
public static int resSizeTablet = 0; 
public static int size() 
{ 
    String prf = G.preference.getString("lstFontSize", (resSize != 0) ? String.valueOf(resSize) :String.valueOf(resSizeTablet)); 
    size = Integer.parseInt(prf); 
    return size; 
} 
public static int DefaultFontSize(Activity act){ 
    Display display = act.getWindowManager().getDefaultDisplay(); 
    DisplayMetrics dm=new DisplayMetrics(); 
    display.getMetrics(dm); 
    int p=isTabletDevice(); 
    if (p == 0) { 
     int density=dm.densityDpi; 
     switch(density){ 
     case DisplayMetrics.DENSITY_LOW: 
      return resSize = 10; 
     case DisplayMetrics.DENSITY_MEDIUM: 
      return resSize = 10; 
     case DisplayMetrics.DENSITY_HIGH: 
      return resSize = 14; 
     case DisplayMetrics.DENSITY_XHIGH: 
      return resSize = 18; 
     case DisplayMetrics.DENSITY_XXHIGH: 
      return resSize = 24; 
     case DisplayMetrics.DENSITY_XXXHIGH: 
      return resSize = 28; 
     } 
    } 
    return 0; 

} 

public static int isTabletDevice() { 

    boolean xlarge = ((G.context.getResources().getConfiguration().screenLayout & 
         Configuration.SCREENLAYOUT_SIZE_MASK) == 
         Configuration.SCREENLAYOUT_SIZE_XLARGE); 

    if (xlarge) { 
     DisplayMetrics metrics = new DisplayMetrics(); 
     Activity activity = (Activity) G.context; 
     activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); 

     switch (metrics.densityDpi) { 
     case DisplayMetrics.DENSITY_HIGH: 
      return resSizeTablet = 24; 
     case DisplayMetrics.DENSITY_MEDIUM: 
      return resSizeTablet = 20; 
     case DisplayMetrics.DENSITY_XHIGH: 
      return resSizeTablet = 28; 

     default: 
      break; 
     } 
    } 
    return 0; 
} 

然後你可以使用:

Conver.setTextSize(TypedValue.COMPLEX_UNIT_SP,YourClassName.size()); 
1

你必須像

移動創建不同的默認字體大小不同的文件夾: -

res/values/dimens.xml(default) 
res/values-ldpi/dimens.xml (240x320 and nearer resolution) 
res/values-mdpi/dimens.xml (320x480 and nearer resolution) 
res/values-hdpi/dimens.xml (480x800, 540x960 and nearer resolution) 
res/values-xhdpi/dimens.xml (720x1280 - Samsung S3, Micromax Canvas HD) 

平板電腦:

- 對於平板電腦或更大的屏幕,你必須創造更多的像 特定文件夾可繪製 -

large.res/values-large/dimens.xml (480x800) 
+0

這不是一個答案 – 2014-10-07 06:12:19

+0

我想這個答案將幫助您設置默認字體大小 – 2014-10-07 06:42:23

+0

@llya現在我已經給出了該quatsion的答案,所以我希望它會幫助他 – 2014-10-07 06:47:24

0

看看這個post.和這個post.第一篇文章是重複的,另一篇不是,但他們都在同一頁面上,最有可能的東西可能會幫助你。如果你的整個應用程序只是一堆textViews,那麼你可以動態地改變這樣的textViews的字體大小:

TextView myTextView = new TextView(this); 
myTextView .setTextSize(TypedValue.COMPLEX_UNIT_SP,14); 

希望我幫助。

0

定義你的字號在res - >數值 - > dimens.xml文件中像

<dimen name="fontSize14">14sp</dimen> 

和平板電腦或其他手機,您可以相應地設置在其特定的文件夾一樣 資源 - >值 - sw360dp - > dimens.xml

<dimen name="fontSize14">16sp</dimen> 

我設置16SP在sw360dp文件夾,你可以設置爲你想要

在TextView的通話android:textSize="@dimen/fontSize14" 我希望我會爲你

相關問題