针对相同语言但不同屏幕分辨率的不同资源



是否可以在不同的屏幕分辨率下对同一字符串和语言使用不同的文本?

示例:以单词Cancel为例,它在德语中是Abbrechen。是否可以在更高的屏幕密度中使用Abbrechen,如xxhdpi和精简字Abrech

我曾尝试在文件夹中定义两个具有相同名称和字符串的语言文件:values devalues de xxhdpi,但这不起作用,因为语言优先,所有手机都使用相同的定义,在这种情况下,value de xxhdpi中定义的文件会覆盖value de

您可以使用dimens.xml资源。例如,为德语创建res/values-de/dimens.xml文件,为法语创建res/values-fr/dimens.xml文件。

dimens.xml

<?xml version="1.0" encoding="utf-8"?> 
  <resources>
    <dimen name="f_size">16sp</dimen> 
  </resources>

Layout.xml

<TextView
    android:textSize="@dimen/f_size"/>

这对有帮助吗

编辑:

字符串依赖于屏幕分辨率:

float density = context.getResources().getDisplayMetrics().density;
if (density >= 4.0) {
    tv1.setText(getString(R.string.xxxhdpiXY));
    tv1.setTextSize(TypedValue.COMPLEX_UNIT_SP, 18);
}
if (density >= 3.0) {
    tv1.setText(getString(R.string.xxhdpiXY));
    tv1.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16);
}
if (density >= 2.0) {
    tv1.setText(getString(R.string.xhdpiXY));
    tv1.setTextSize(TypedValue.COMPLEX_UNIT_SP, 15);
}
if (density >= 1.5) {
    tv1.setText(getString(R.string.hdpiXY));
    tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 14);
}
if (density >= 1.0) {
    tv1.setText(getString(R.string.mhdpiXY));
    tv1.setTextSize(TypedValue.COMPLEX_UNIT_SP, 13);
}

最新更新