2012-03-15 109 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 
} 
相关问题