3
我想讓視圖的寬度基於屏幕的寬度。取決於從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(360, 15);
取代
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(widthDP, 15);
視圖仍然只有60%左右的屏幕寬度。根據屏幕大小,此錯誤因設備而異。如何正確設置寬度以基於屏幕寬度?