【问题标题】:Making a View's width based on screen width根据屏幕宽度制作视图的宽度
【发布时间】:2014-03-30 06:01:09
【问题描述】:

我试图让视图的宽度基于屏幕的宽度。根据从 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% 左右。根据屏幕尺寸,此错误因设备而异。如何根据屏幕宽度正确设置宽度?

【问题讨论】:

    标签: android android-layout width android-view


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-02
      • 2023-03-03
      • 1970-01-01
      相关资源
      最近更新 更多