Android中的动态vs XML布局?

Dav*_*amp 16 java android android-layout android-xml netbeans-7

我是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);
}
Run Code Online (Sandbox Code Playgroud)

但我也看到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>
Run Code Online (Sandbox Code Playgroud)

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

Com*_*are 25

使用布局XML资源文件.

首先,资源集(例如,res/layout-land/除此之外res/layout/)允许您定义在不同情况下使用的多个UI,系统会根据需要自动选择正确的UI.Java中的等价物将是一组令人讨厌的ifswitch陈述.

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

第三,它往往更简洁,所以如果你手工输入这些东西,那么XML将更少打字.

第四,您将找到的所有示例代码中大约98%将使用布局XML文件,并且您在StackOverflow(和其他支持资源)上找到的所有UI答案的大约98%将假定您使用布局XML文件.虽然你可以自由地避免使用XML - 也许你会像小孩子一样被尖括号攻击 - 你会游到上游,与大多数Android开发人员相比,当前正在游击.

  • 此外,在Java代码中,您必须编译并运行代码以查看布局的外观,而在XML中(如果您使用的是eclipse),您可以直接使用eclipse提供的工具查看它. (5认同)