使用Layouts
首选实现layout的方式是以外部资源方式在XML中定义。一个布局XML必须包含单一的根元素。这个根节点可以尽可能的包含layouts和Views来构建任意复杂的界面。
下面的XML片段显示了一个简单的layout,其内放置了一个TextView和一个EditText控件,通过LinearLayout配置成垂直布局:
<?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=”Enter Text Below”
/>
<EditText
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
android:text=”Text Goes Here!”
/>
</LinearLayout>
在XML中实现layouts能够降低显示层与View和Activity代码的耦合性。同时,它也允许你创建基于指定硬件变化而动态加载资源的程序,而不需要任何代码变更。
即使它是首选的或必须的,你也可以在代码里实现layout。当指定Views给layouts时,应用LayoutParameters 参数是很重要的,使用setLayoutParams方法或传递它们到addView调用中,如下代码所示:
LinearLayout ll = new LinearLayout(this);
ll.setOrientation(LinearLayout.VERTICAL);
TextView myTextView = new TextView(this);
EditText myEditText = new EditText(this);
myTextView.setText(“Enter Text Below”);
myEditText.setText(“Text Goes Here!”);
int lHeight = LinearLayout.LayoutParams.FILL_PARENT;
int lWidth = LinearLayout.LayoutParams.WRAP_CONTENT;
ll.addView(myTextView, new LinearLayout.LayoutParams(lHeight, lWidth));
ll.addView(myEditText, new LinearLayout.LayoutParams(lHeight, lWidth));
setContentView(ll);