在android中自动更改默认字体大小?

时间:2014-10-07 05:54:21

标签: android

我创建了设置(字体大小)的首选项。我为手机和平板电脑(自动)类型定义了多个array.xml。我需要自动为我的设置(字体大小)设置默认字体大小。

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

4 个答案:

答案 0 :(得分: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)

答案 1 :(得分: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());

答案 2 :(得分:0)

看看这个post.和这个post.第一篇文章是重复的,另一篇不是,但它们都在同一页面上,很可能是可以帮助你的东西。如果您的整个应用程序只是一堆textViews,那么您可以动态更改textViews的字体大小,如下所示:

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

希望我帮忙。

答案 3 :(得分:0)

在res - &gt; values - &gt; dimens.xml文件中定义FontSize,如

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

对于平板电脑或其他手机,您可以在其特定文件夹中进行相应设置 res - &gt; value-sw360dp - &gt; dimens.xml

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

我在你可以设置的sw360dp文件夹中设置16sp

在TextView中调用android:textSize="@dimen/fontSize14" 我希望我会为你工作