1

我是使用多个屏幕的新手,需要以下帮助:

我有 2 台设备:

  1. 三星S4

    • 显示等级:正常
    • 最小宽度:360dp
    • 分辨率:1080 * 1920
    • 密度等级:XXHDPI
    • 密度:442dpi
  2. 三星平板电脑:

    • 显示类:大
    • 最小宽度:600dp
    • 分辨率:600 * 1024
    • 密度等级:MDPI
    • 密度:168dpi

我的问题是两个设备的值都是从同一个维度文件中提取的。

  • 如果我有小文本,在手机上看起来还可以,但在平板电脑上太小了
  • 如果我有大文本,在平板电脑上看起来还可以,但在手机上太小了

你能告诉我每个值目录的名称应该是什么吗?

我努力了:

值-sw360dp-xxhdpi 值-sw600dp-mdpi

然而,这并没有什么不同。

我有一个方法:

public void setTextSize(Context context, TextView view, int textSizeInSp)
{
  float spToPixel= TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, textSizeInSp, context.getResources().getDisplayMetrics());

  view.setTextSize(convertSpToPixels(spToPixel, getApplicationContext()));
}

我有 2 个维度文件条目:

值-sw360dp-xxhdpi\dimens

<dimen name="font_english_large">20sp</dimen>

值-sw600dp-mdpi\dimens

<dimen name="font_english_large">32sp</dimen>

我以编程方式尝试通过调用来更改文本大小:

setTextSize(this, textView, (int)getResources().getDimension(R.dimen.font_english_large);

谢谢你。

4

1 回答 1

1

您只需要valuesvalues-large,然后使用 sp 度量将您的字体大小添加到相应的文件中。例如在values/dimens.xml添加

<dimen name="randrom_text_font_size">18sp</dimen>

values-sw600dp/dimens.xml添加类似的东西

<dimen name="randrom_text_font_size">28sp</dimen>

然后在你的java代码中:

textView.setTextSize(0,getResources().getDimension(R.dimen.randrom_text_font_size));

或者在 XML

 android:textSize="@dimen/randrom_text_font_size"
于 2017-09-03T11:07:32.310 回答