Android 中的 Dynamic vs XML 布局?

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

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ScrollView sv = new ScrollView(this);
    LinearLayout ll = new LinearLayout(this);
    ll.setOrientation(LinearLayout.VERTICAL);
    sv.addView(ll);
    TextView tv = new TextView(this);
    tv.setText("Name");
    ll.addView(tv);
    EditText et = new EditText(this);
    ll.addView(et);
    Button b = new Button(this);
    b.setText("Ok");
    ll.addView(b);
}

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

<?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>

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


答案 1

使用布局 XML 资源文件。

首先,资源集(例如,除了 )允许您定义多个UI以在不同情况下使用,系统根据需要自动选择正确的UI。Java 中的等效项是一组令人讨厌的 or 语句。res/layout-land/res/layout/ifswitch

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

第三,它往往更简洁,所以如果你手动键入这些东西,XML的打字会更少。

第四,在您将找到的所有示例代码中,大约 98% 将使用布局 XML 文件,而在 StackOverflow(以及其他支持资源)上找到的所有 UI 答案中,大约 98% 将假定您使用布局 XML 文件。虽然你可以自由地避免XML——也许你小时候被尖括号攻击过——但你会游到上游,与大多数Android开发人员相比,与当前作斗争。


答案 2

我建议对项目的大部分部分使用 xml 布局。您可以将布局放在不同的文件夹中,例如:

布局-土地-景观>

布局端口 -纵向>

layout-v15 -> for android 版本 >= 15

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

使用这些资源分类器,您可以快速获得各种布局,以支持各种Android设备,而无需编写大量代码。

在我看来,这是使用 xml 资源与动态创建所有布局相比的最大优势。有关详细信息,请参阅有关资源的此链接


推荐