如何从dd格式的dimen文件夹中获取价值

时间:2016-08-30 19:45:52

标签: android android-layout android-screen-support

我想以编程方式设置我的布局大小。这个布局大小来自dimen文件夹。但问题是当我从dimen文件夹中获取值时,它会在正常分辨率屏幕中完美显示,但是当它以高显示分辨率运行时,它并不能完美运行

5 个答案:

答案 0 :(得分:2)

您可以使用以下方法之一以编程方式设置布局大小:

方法1:

  •  int width = getResources().getDimensionPixelSize(R.dimen.layout_width);
    
  •  int height = getResources().getDimensionPixelSize(R.dimen.layout_height);
    

方法2:

  •  int width = (int) (widthdpValue * Resources.getSystem().getDisplayMetrics().density);
    
  • int height = (int) (heightdpValue * Resources.getSystem().getDisplayMetrics().density);`
    

将此宽度和高度设置为布局。

答案 1 :(得分:1)

您必须将从dimen文件夹获得的dp值转换为设备屏幕密度的正确像素数。例如:

float dp = 5.0f // This is the dp value from your dimen file
DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dp, displayMetrics);

其中px是将在设备上正确显示的缩放像素值。

答案 2 :(得分:1)

请参阅此链接Different values folders in android

为每个屏幕密度创建“values”文件夹,并在每个“dimensions.xml”文件中定义布局的大小。这将使您能够在不使用任何Java代码的情况下对同一布局使用不同的大小。

希望这会有所帮助:)

答案 3 :(得分:0)

是的,我解决了screen resolution问题。 当您从dimen文件夹中获取价值时,它将获得Pixel格式。像素大小取决于您的device resolution不是device size。 因此,您需要创建基于dimen文件夹的screen sizescreen resolution。如: enter image description here

在此文件夹中分类为不同的屏幕尺寸和不同的屏幕分辨率。

答案 4 :(得分:0)

您不能只为所有设备布局使用一个尺寸,请尝试创建一个不同尺寸的值资源文件夹

你可以参考下面我的项目,它可以帮助你自动生成不同floder中的维度 https://github.com/Vaycent/genDimensXml 我希望这可以帮助你