Android应用程序屏幕兼容性

Android应用程序屏幕兼容性,android,android-layout,Android,Android Layout,我目前正在开发一个应用程序,它可能会在所有android设备上使用。我发现根据不同的屏幕大小调整XML布局文件非常具有挑战性。我已经在这个主题上浏览了很多,并在网站上找到了一个有用的文档。该文档很不错,提供了足够的信息,说明了如何实现屏幕兼容性 问题: 1.如果我在res/layout-sw600dp和res/layout-sw720dp等文件夹中有两种不同的布局,应用程序会自动决定使用哪一种布局吗 2.假设我更喜欢手机的ListView和选项卡的GridView作为主页显示,我将如何定义我的布

我目前正在开发一个应用程序,它可能会在所有android设备上使用。我发现根据不同的屏幕大小调整XML布局文件非常具有挑战性。我已经在这个主题上浏览了很多,并在网站上找到了一个有用的文档。该文档很不错,提供了足够的信息,说明了如何实现屏幕兼容性

问题:

1.如果我在res/layout-sw600dp和res/layout-sw720dp等文件夹中有两种不同的布局,应用程序会自动决定使用哪一种布局吗

2.假设我更喜欢手机的ListView和选项卡的GridView作为主页显示,我将如何定义我的布局以及如何将它们引用到UI


任何关于如何完成第二个问题功能的想法都将不胜感激。提前谢谢

对于问题1,是的,Android将自动选择并决定两者中最合适的一个

对于2,这里是链接-
希望有帮助

您可以通过检查hasHoneycomb在java中对其进行区分,选项卡将给出tru作为返回值。一种方法是:您可以根据条件从setcontentview设置不同的布局

if(hasHoneycomb()) {
setcontentView(layout_for_tabs);
} else {
setcontentView(layout_for_phones);
}

是的,应用程序自动决定当前设备屏幕使用哪个布局文件

为ListView和GridView指定不同的ID。在代码中,创建视图时使用findViewById方法。
如果ListView发现findViewByIdR.id.list返回视图应用程序正在手机上运行,否则findViewByIdR.id.list返回空值,findViewByIdR.id.grid返回视图应用程序正在平板电脑上运行。

1是,根据屏幕大小,它将返回

2给他们不同的ID,看看哪一个是可见的:

ListView mList = (ListView) findViewById( R.id.homeList );
GridView mGrid = (GridView) findViewById( R.id.homeGrid );

if( mList != null ) {
    // set list adapter
} else if( mGrid != null ) {
    // set grid adapter 
} else {
    // neither view exists...
}

您可以通过检查hasHoneycomb在java中对其进行区分,选项卡将给出tru作为返回值。一种方法是:。只需将布局放在适当的res/layout文件夹中。这将根据布尔返回值区分我的布局,对吗?是的,蜂窝版本仅适用于平板电脑,您可以使用它来区分平板电脑和手机。我不明白这一点。第一个if条件始终为true,因为根据您的代码,列表视图已经存在。我很困惑。不,这不一定是真的。仅当当前布局包含id为“homeList”的视图时。主屏幕将有两种不同的布局,一种带有ListView homeList,另一种带有GridView homeGrid。Android将根据您放置它的布局文件夹以及它运行的屏幕大小来选择布局。如果它使用GridView选择布局,那么mList将为空。那么您是说平板电脑的Grid将自动设置,手机的List将自动设置?它将如何区分在哪些设备上选择哪些设备?我应该明确地添加一些正确的内容,那会是什么?如果您将layout with GridView设置为res/layout-sw720dp,它将显示在屏幕宽度为720dp或更大的设备上。