根据Android中的屏幕大小和布局显示不同的内容

时间:2012-03-15 15:07:14

标签: android

我正在尝试制作一款具有2种布局的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)

解决方案的任何想法?

由于

克里斯

3 个答案:

答案 0 :(得分: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和大屏幕。

答案 1 :(得分:0)

我建议为每个列表视图使用片段(以及创建每个片段的类)。

手机布局只有一个,您可以设置平板电脑布局以包含所有这些布局。

如果您定义了在xml中填充片段的类,那么您不必担心选择,框架将为您完成。

答案 2 :(得分: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
}