2012-12-15 47 views
0

現在,我這樣做:如何檢查平板尺寸編程方式在Android的

if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE) { 
     actionBar.removeAllTabs(); 

    } else { // other stuff to do 

    } 

不過,我想這證明是正確的,只有當它是10" +平板電腦,或XLARGE不是7英寸(例如, Nexus 7),我希望7「與手機的佈局相同。我可以做實用的檢查嗎?

回答

2

更換SCREENLAYOUT_SIZE_LARGESCREENLAYOUT_SIZE_XLARGE

if ((getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_XLARGE) { 
    /* implementation */ 
} 

如果可能,請避免使用已棄用的largexlarge限定符並使用新的sw<N>dp限定符。但是,根據您的目標受衆和平臺,您可能需要依靠較舊的方法,或者可能是兩者兼而有之。

+0

哇,我怎麼錯過了? – KickingLettuce

3

你應該避免在代碼中這樣做,而是做一個資源合格的文件夾爲sw720dp定義(即你應該讓res/layout-sw720dp下你10" 佈局)佈局。避免使用largexlarge預選賽,並依靠。密度無關的像素數量產生

更多信息請參見第Supporting Multiple Screens本節

+0

問題是,我有一個'ViewPager'和Action Bar選項卡,我無法控制(刪除)XML而不會崩潰應用程序。我不需要他們在大屏幕上,但我做的很小。所以如果我這樣做,就像你說的那樣,我在'ViewPager'上得到空指針。現在,我可以使用密度獨立限定符以編程方式執行此操作嗎? – KickingLettuce

+3

有幾種不同的方法可以做到這一點...一個hackish,但很簡單的方法來做到這一點,我看到[這裏](http://stackoverflow.com/a/7284958/321697)將是一個布爾在你的values.xml中,另一個在'res/values-sw720dp/values.xml'中,第一個是false,第二個是true。然後在代碼中,獲取布爾值的值。如果這是真的,那麼你在sw720dp設備上。 – kcoppock

+0

第二種方法是獲得DisplayMetrics,獲得窗口區域的像素尺寸,並將其除以(density/160)(例如,1920x1080 hdpi設備將是(1080 /(240/160))==(1080/1.5)== 720dp)。 – kcoppock

相關問題