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