为平板电脑和手机创建自定义布局

时间:2014-07-10 07:16:14

标签: android android-layout android-fragments android-view android-custom-view

我需要创建一个自定义布局,其中包含平板电脑上的两行,用于显示特色和常规项目(无需滚动),以及仅显示特色项目的手机上的列表视图。是否有可能创建这样的布局,有人可以与我分享一些库,这将有助于我创建这种布局吗?

以下是平板电脑的外观:

enter image description here

以下是手机的外观:

enter image description here

3 个答案:

答案 0 :(得分:4)

您必须为平板电脑和手机使用不同的布局文件夹。

默认文件夹为 res / layout

对于平板电脑,只需创建一个新文件夹 res / layout-large ,然后将平板电脑模式布局放在那里。请记住,这些布局xml文件需要具有相同的名称。当应用程序在大屏幕下运行时,Android系统现在将查找布局大文件夹布局。

您有关于支持多种屏幕尺寸(更具体地说)here的官方文档。

<<<<<< ----------编辑:---------->>>>>

在活动下使用以控制不同屏幕尺寸下的代码:

int screenSize = getResources().getConfiguration().screenLayout &
        Configuration.SCREENLAYOUT_SIZE_MASK;

String toastMsg;
switch(screenSize) {
    case Configuration.SCREENLAYOUT_SIZE_LARGE:
        toastMsg = "Large screen";
        break;
    case Configuration.SCREENLAYOUT_SIZE_NORMAL:
        toastMsg = "Normal screen";
        break;
    case Configuration.SCREENLAYOUT_SIZE_SMALL:
        toastMsg = "Small screen";
        break;
    default:
        toastMsg = "Screen size is neither large, normal or small";
}

答案 1 :(得分:3)

在以下文件夹中创建布局

res / layout-w1280dp - 适用于10英寸设备

res / layout-w820dp - 适用于7英寸设备

res / layout - 其他一切

不要使用:

可能无法正确检测到

res / layout-large 。依靠上面显示的dp大小

答案 2 :(得分:1)

首先检测设备是手机还是平板电脑。您可以通过计算设备屏幕大小来实现。

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
double x = Math.pow(metrics.widthPixels/metrics.xdpi,2);
double y = Math.pow(metrics.heightPixels/metrics.ydpi,2);
double screenInches = Math.sqrt(x+y);
Log.d("debugging","Screen inches : " + screenInches);

并在res文件夹中使用不同的布局。在您的代码中决定是发起ListView还是LinearLayout