在XML文件中编写布局
Android可以使用XML布局文件控制界面布局,从而有效地将界面中布局的代码和Java代码隔离,使程序的结构更加清晰。因此多数Android程序采用这种方式编写布局。前面讲过,布局文件通常放在 res/layout文件夹中,我们可以在该文件夹的XML文件中编写布局,下面是 actIvity_main.xml的布局代码,具体如下所示。
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="使用XML布局文件控制UI界面" android:textColor="#ff0000" android:textSize="18sp" android:layout_centerInParent="true" /> </RelativeLayout> protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //调用activity_main }上述代码中,定义了一个相对布局RelativeLayout,在该布局中定义了一个 TextView控件。其中,Relativelayout继承自ViewGroup,TextView继承自vew。
2.在Java代码中编写布局
Android程序的布局不仅可以在XML布局文件中编写,还可以在Java代码中编写。在 Android中所有布局和控件的对象都可以通过new关键字创建出来,将创建的View控件加到ViewGroup布局中,从而实现vew控件在布局界面中显示。接下来,我们将使用XML布局文件编写的布局,使用Java代码改写,改写后的示例 代码如下所示:
package com.example.myapplication; import androidx.appcompat.app.AppCompatActivity; import android.graphics.Color; import android.os.Bundle; import android.widget.RelativeLayout; import android.widget.TextView; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); RelativeLayout relativeLayout = new RelativeLayout(this); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT); //addRule 参数对应RelativeLayout XML 布局的属性 params.addRule(RelativeLayout.CENTER_IN_PARENT); //设置居中 TextView textView = new TextView(this); //创建TextView控件 textView.setText("使用Java实现界面布局"); //设置TextView的文字内容 textView.setTextColor(Color.RED); //设置TextView的文字颜色 textView.setTextSize(18); //设置TextView的文字大小 //添加TextView对象和TextView的布局属性 relativeLayout.addView(textView,params); setContentView(relativeLayout); //设置在Activity中显示RelativeLayout } }需要注意的是,不管哪种布局,它们控制Android用户界面行为的本质是完全一样的,大多数时候,控制UI元素的XML属性都有相对应的方法。