android - 根据屏幕宽度制作 View 的宽度

标签 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,这是正确的。然后我用它来设置我的 View 的宽度,其中 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);

View 仍然只有屏幕宽度的 60% 左右。此错误因屏幕尺寸而异。如何根据屏幕宽度正确设置宽度?

最佳答案

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

关于android - 根据屏幕宽度制作 View 的宽度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22057816/

相关文章:

jquery - 使用 jQuery 动画隐藏 div 宽度的变化

CSS responsive : shrink some divs first, 然后其他等等

java - 我的切换中的 SharedPreferences 问题

android - 从 Assets 文件夹复制到 SD 卡

android - 如何减少 TableLayout 中单元格之间的填充?

android - 如何在项目点击 Activity 中调用两个 fragment

强制关闭后Android相机锁定

android - 如何将 OK Google 语音查询连接到我的应用程序

带抽屉导航的 Android 布局

css - 为什么3个宽度均为33%的图像都不能适合div?