Agg*_*Dev 5 android width android-layout android-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;
Run Code Online (Sandbox Code Playgroud)
这会为我的设备返回 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);
Run Code Online (Sandbox Code Playgroud)
由于某种原因,当“timeCountNewRange”值为 100 时,它仅占屏幕宽度的 60% 左右,其他所有内容也更短。如果更换
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(widthDP, 15);
Run Code Online (Sandbox Code Playgroud)
和
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(360, 15);
Run Code Online (Sandbox Code Playgroud)
视图仍然只有屏幕宽度的 60% 左右。根据屏幕尺寸,此错误因设备而异。如何根据屏幕宽度正确设置宽度?