2012-03-15 93 views
1

我正在嘗試製作具有2個佈局的Android應用程序,一個用於手機,另一個用於平板電腦。根據屏幕大小和android中的佈局顯示不同的內容

我有兩個佈局,但我很難用內容填充它們。電話佈局(res/layout)由1個列表視圖組成,這個列表視圖是從數據庫填充的。

平板電腦佈局(res/layout-large)有5個單獨的列表視圖,所有這些都需要填充。

基本上,我需要這樣的一些方法:

if(screensize != large) { 
    populateSingleListView(); 
} 
else { 
    populateMultipleListViews(); 
} 

我使用下面的代碼做嘗試,但它似乎並沒有模擬器

(getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == Configuration.SCREENLAYOUT_SIZE_LARGE) 

內檢測到屏幕大小任何想法的解決方案?

感謝

克里斯

回答

0
public void populateList() { 
    ListView list1 = (ListView) getView().findViewById(R.id.list1); 
    ListView list2 = (ListView) getView().findViewById(R.id.list2); 

    if(list1 != null) { 
     // Do sth 
    } 

    if(list2 != null) { 
     // Sth else 
    } 
} 

所以在小屏幕,你有list1的填充和你有兩個填充的大屏幕。

+0

感謝的人檢測到它,給它一個去 – Chrisrs2292 2012-03-15 15:21:57

+0

歡迎您。如果有效,請點擊以接受答案以備將來參考。 – Calvin 2012-03-15 15:23:45

+0

嗯認爲這個問題是關係到我的模擬器,由於某種原因,它不是從layout-large加載資源= [編輯:只是固定我的AVD,這似乎是工作謝謝:) – Chrisrs2292 2012-03-15 15:58:02

0

我會推薦使用片段(和一個類來創建每個)爲每個列表視圖。

手機佈局將只有一個,您可以設置平板電腦佈局以包含所有這些佈局。

如果您定義了在xml中填充片段的類,那麼您不必擔心選擇,它將由框架爲您完成。

0

嘗試使用顯示器高度&寬度

DisplayMetrics metrix = new DisplayMetrics(); 
getWindowManager().getDefaultDisplay().getMetrics(metrix); 
displayHeigh = metrix.heightPixels; 
displayWidth = metrix.widthPixels; 

if(displayHeigh > displayWidth){ // or something else 
    // for phone 
}else{ 
    // for tablet 
} 
相關問題