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

时间:2016-05-06 08:31:09

标签: android size screen resolution

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

实施例: 取消取消,德语是Abbrechen。是否有可能在 xxhdpi 等较高的屏幕密度中使用 Abbrechen ,而在其余部分使用缩小的单词 Abbrech。

我尝试在文件夹中定义两个具有相同名称和相同字符串的语言文件: values-de values-de-xxhdpi ,但这是不起作用,因为语言优先,所有手机都使用相同的定义,在这种情况下, values-de-xxhdpi 中定义的那些将覆盖 values-de 中的值。< / p>

1 个答案:

答案 0 :(得分:2)

您可以使用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);
}