Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 相同语言但不同屏幕分辨率的不同资源_Android_Size_Screen_Resolution - Fatal编程技术网

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

Android 相同语言但不同屏幕分辨率的不同资源,android,size,screen,resolution,Android,Size,Screen,Resolution,是否可以在不同的屏幕分辨率下对相同的字符串和语言使用不同的文本 例如: 以Cancel这个词为例,在德语中是Abbrechen。是否有可能在较高的屏幕密度中使用Abbrechen,如xxhdpi和简化的单词Abbrech。剩下的呢 我尝试在文件夹中定义两个名称和字符串相同的语言文件:values de和values de xxhdpi,但这不起作用,因为语言优先,所有手机使用相同的定义,在这种情况下,在values de xxhdpi中定义的值将覆盖values de中的值,您可以使用dimen

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

例如: 以Cancel这个词为例,在德语中是Abbrechen。是否有可能在较高的屏幕密度中使用Abbrechen,如xxhdpi和简化的单词Abbrech。剩下的呢


我尝试在文件夹中定义两个名称和字符串相同的语言文件:values devalues de xxhdpi,但这不起作用,因为语言优先,所有手机使用相同的定义,在这种情况下,在values de xxhdpi中定义的值将覆盖values de中的值,您可以使用
dimens.xml
资源。例如,为德语创建文件
res/values de/dimens.xml
,为法国创建文件
res/values fr/dimens.xml

在dimens.xml中


谢谢,但我的问题不在于不同的语言,而在于同一种语言在不同的分辨率下。我想根据设备屏幕分辨率对同一字符串/语言使用两个不同的值。哦,好的。我认为这只能通过代码实现。为多分辨率创建相同的字符串,并将其设置为
getResources().getDisplayMetrics()
<?xml version="1.0" encoding="utf-8"?> 
  <resources>
    <dimen name="f_size">16sp</dimen> 
  </resources>
<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);
}