我想让一个视图的宽度基于屏幕的宽度。根据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%,这个错误因设备屏幕大小而异。如何正确设置宽度基于屏幕宽度?