根据屏幕宽度制作视图的宽度

时间:2014-02-27 02:25:52

标签: android android-layout width android-view

我试图让View的宽度基于屏幕的宽度。根据0到100之间的值,宽度将是屏幕宽度的百分比。以下是我在DP中获取屏幕宽度的方法:

Display display = ((Activity)context).getWindowManager().getDefaultDisplay();
DisplayMetrics outMetrics = new DisplayMetrics ();
display.getMetrics(outMetrics);
float density  = context.getResources().getDisplayMetrics().density;
float screenWidthDP = outMetrics.widthPixels / density;

这为我的设备返回360dp,这是正确的。然后我用它来设置我的视图的宽度,其中timeCountNewRange()返回0到100之间的值:

int timeCountNewRange = getNewRangeTimeCount(timeCount, min, max);
int widthDP = (int) (((double)timeCountNewRange / 100.0) * screenWidthDP);

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(widthDP, 15);
params.setMargins(5, 0, 0, 0);
appHolder.timeBar.setLayoutParams(params);

由于某种原因,当“timeCountNewRange”值为100时,它仅占屏幕宽度的约60%,其他所有内容也都更短。如果替换

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(widthDP, 15);

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(360, 15);

视图仍然只有屏幕宽度的60%左右。此错误因设备而异,具体取决于屏幕尺寸。如何根据屏幕宽度正确设置宽度?

1 个答案:

答案 0 :(得分:1)

如果以编程方式设置,布局参数将以像素为单位设置。您必须再次将dp转换为像素并设置宽度