請正確地讓我在這裏:安卓:獲取屏幕尺寸爲根佈局僅
我想獲得可用的高度/空間的寬度與活動/佈局onCreate()方法來計算高度可以給予兒童佈局。我可以使用以下屏幕大小:
root = (LinearLayout) findViewById(R.id.mainroot); // Main layout of LinearLayout
android.view.Display display = getWindowManager().getDefaultDisplay();
int height = Display.getHeight(); // I know this is deprecated have hence used
int width = Display.getWidth(); // DisplayMetrics
int childWidth, childHeight;
DisplayMetrics metrics = new DisplayMetrics();
display.getMetrics(metrics);
//int density = metrics.densityDpi;
height = metrics.heightPixels; //480
width = metrics.widthPixels; //320
這兩種方法/方式都給我相同的高度和寬度,即全屏大小。我正在尋找的是獲得實際的高度,這是在扣除應用標題,狀態欄等之後的佈局。
任何想法如何得到這個。或者獲得標題的大小等 - 這裏應該統計所有的東西。在模擬器上,我看到頂部有2個條 - 1必須是應用程序標題什麼是另一個。我可以獲得所有的高度,並從屏幕高度中扣除。
還有一點:在這種情況下,我將按照程序設置高度,因此它將以像素爲基礎(因爲我只能以像素爲單位設置像素高度)會影響密度因子,屏幕大小不同。什麼可以是一種方式來計算高度(讓說50%)的兒童佈局,將任何密度相同的所以。
我不認爲用戶可以在運行時更改設備密度,但在3.2中引入了兼容模式後,我不確定這會對它造成怎樣的影響。至於你的測量,如果你真的不需要「狀態欄」和「標題欄」的大小,但只真的需要你的意見的可用大小,那麼你爲什麼不在你的運行()方法:'run(){sRootHeight = root.getHeight(); }'sRootHeight'是一個靜態類變量,所以你的其他活動可以引用它。 – 2012-02-03 02:00:00
@Turbo,我實際上有兩排3個按鈕。基於可用空間,我計算按鈕的高度和寬度,考慮它們之間的空間。我在XML中添加了兩行,每行3個按鈕,root.getHeight();給我的標準尺寸的按鈕。如果屏幕處於portriat模式,則在橫向模式下,高度大於寬度,反之亦然。基於可用的高度,我可以設置按鈕的高度。如果在3.2版中兼容性moe可能會受到一定程度的影響,那麼在更高版本中,它也可能完全可用。你說什麼 ?? – Tvd 2012-02-03 05:53:56
我還沒有玩兼容模式,所以我不太熟悉它的影響。但是使用獲取視圖高度的root.post()方法是非常安全的,因爲無論屏幕大小如何,您都可以在運行時計算所需的空間。如果你擔心兼容模式[這裏是你如何禁用它](http://developer.android.com/guide/practices/screen-compat-mode.html#Disable) – 2012-02-11 09:18:22