Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android中的动态与XML布局?_Java_Android_Android Layout_Netbeans 7_Android Xml - Fatal编程技术网

Java Android中的动态与XML布局?

Java Android中的动态与XML布局?,java,android,android-layout,netbeans-7,android-xml,Java,Android,Android Layout,Netbeans 7,Android Xml,我是Android开发新手,已经开始创建自己的UI。我看到您可以动态地创建它,如()所示: 但我也看到netbeans有一个文件Resources->layout->main.xml。因此,您可以为UI()创建XML布局: 所以我的问题是我应该用哪一个?在Android开发中,动态布局与XML布局的建议和优缺点是什么?使用布局XML资源文件 首先,资源集(例如,res/layout land/以及res/layout/)允许您定义在不同环境下使用的多个UI,系统会根据需要自动选择正确的UI。

我是Android开发新手,已经开始创建自己的UI。我看到您可以动态地创建它,如()所示:

但我也看到netbeans有一个文件Resources->layout->main.xml。因此,您可以为UI()创建XML布局:



所以我的问题是我应该用哪一个?在Android开发中,动态布局与XML布局的建议和优缺点是什么?

使用布局XML资源文件

首先,资源集(例如,
res/layout land/
以及
res/layout/
)允许您定义在不同环境下使用的多个UI,系统会根据需要自动选择正确的UI。Java中的等效语句是一组讨厌的
if
switch
语句

其次,有一些工具可以帮助您成功地创建这些布局资源。即使Eclipse的拖放GUI构建不是您的拿手好戏(例如,您正在使用NetBeans),Lint也会帮助您指出布局中的缺陷,因为它只会指出等效Java代码中的一个子集

第三,它往往更简洁,因此如果您手动键入这些内容,那么XML的键入就会更少


第四,大约98%的示例代码将使用布局XML文件,在StackOverflow(和其他支持资源)上找到的所有UI答案中,大约98%将假定您使用布局XML文件。虽然你可以自由地避免使用XML——也许你在孩提时代就受到尖括号之类的攻击——但与大多数Android开发人员的做法相比,你将逆流而上。我建议在项目的大部分部分使用XML布局。 您可以将布局放在不同的文件夹中,例如:

布局土地->用于景观

布局端口->用于纵向

布局-v15->适用于android版本>=15

布局-sw600dp->用于具有一定宽度的屏幕

使用这些资源分类器,您可以快速地在布局中使用各种各样的资源,以支持各种各样的android设备,而无需编写大量额外的代码


在我看来,这是使用xml资源与动态创建所有布局相比的最大优势。有关更多信息,请参见

好吧,我用xml声明mu UI(99%的时间),因为这样做对我来说更容易

将UI和代码逻辑分开是一种很好的做法,XML更易于描述UI(考虑使用或切换到EclipseIDE及其设计器)

此外,一个android应用程序可以有多种设计(针对手机和平板电脑),用Java编写代码将是一件痛苦的事情


简单地说,使用XML

对于大多数事情,我更喜欢XML,因为它允许您将内容与代码分离,而且编辑起来更干净,尤其是当项目变得庞大,您忘记了刚才编写的内容时。使用XML和样式可以让您在整个应用程序中获得一致的外观和感觉。它还允许布局系统处理繁重的工作,并且最终不会出现引用活动上下文的视图。(当您旋转并重新创建活动时,这是不好的)。总的来说,这是一个更快的选择,如果你能用XML来做的话,那就比我喜欢的要快。大多数android架构/教科书似乎也遵循这种设置。(见Android开发文档,Commonware的马克·墨菲)


Dynamic的优势在于它能够以更高级的方式自定义某些内容,并且可以相当轻松地解决一些布局问题。除此之外还有一些好处,但我更喜欢先用XML做所有事情,如果做不到或很难,那么就用代码做。有些事情可以用XML完成,也比用代码简单得多。

这完全是您自己的选择。您可能会发现大多数Android开发人员使用XML来编写应用程序的布局,因为这是专门为此设计的。 然而,我个人来自游戏开发背景,并不真正需要Android提供的UI小部件,所以当我使用UI小部件时,我只是用java编写它


我希望这有帮助。

基于XML的布局取决于强制转换,因为您必须使用:

 Button myButton = (Button) findViewById(R.id.my_button);
因此,您只有一个强制转换和耗时的XML搜索。 当您使用动态创建UI时,管理它要困难得多。你必须组织一切,但你不需要投那么多

我更喜欢第三种解决方案- 它使用依赖注入模式,您不需要考虑强制转换,创建应用程序的速度更快。也更灵活。假设您有一个正常的文本字段。然后您要将其更改为文本区域。在RoboGuice中,只需进行2次更改(用法更改除外)。使用上下文时速度也更快(上下文是非常消耗内存的对象,存储对它的引用是糟糕编码的标志)


所以我的建议是:使用XML,因为它管理UI很简单。用于快速编码。

这是一个相当晚的响应,但有人会发现它很有用。我目前正在制作一个,它允许您使用服务器上声明的动态布局。您可以在这里找到:

+1谢谢。XML就是这样。我有一种感觉,android站点上的大多数代码都使用XML。此外,在Java代码中,您必须编译并运行代码,以查看布局的外观,而在XML中(如果您使用eclipse)你可以通过eclipse提供的工具直接看到它。+1现在我看到xml至少可以消除我对UI不一致性的担忧。是的,这是eclipse的ADT插件的一部分。。。。。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Hello World, AndroidTest"
    />
</LinearLayout>
 Button myButton = (Button) findViewById(R.id.my_button);