“安卓编程学习第七天”中学习了通过xml文件控制TextView控件的属性。可以通过对布局文件activity_main.xml的添加,实现对TextView控件ID、控件显示内容、控件高度和宽度、控件字体、内容颜色以及内容对其方式等属性的设置。
我们在“安卓编程学习第四天”中学到了通过布局文件activity_main.xml实现了TextView控件和Button控件的添加,以及TextView控件响应Button控件点击的功能。今天我们将学习通过代码编程来实现上述功能。
编程实现TextView控件和Button控件的添加及响应,首先要创建并设置线性布局管理器,之后分别创建TextView和Button控件,接下来将两个控件添加到线性布局中,最后完成Button控件的响应。
1 创建并设置线性布局管理器
在“安卓学习第七天”MainActivity.java文件的MainActivity类的定义中,删除onCreate()方法中导入界面布局文件的代码,即
setContentView(R.layout.activity_main);
接下来由编程实现界面布局,即创建并设置线性布局管理器。线性布局管理器由LinearLayout类表示。
1.1 线性布局管理器的创建
通过new 关键字调用LinearLayout类的构造函数实现线性布局管理器的创建。LinearLayout类的构造函数格式是
public LinearLayout(Context context)
context表示应用程序的上下文信息。在onCreate()中使用如下代码创建线性布局管理器
LinearLayout layout = new LinearLayout(this);
1.2 线性布局管理器的设置
在创建了线性布局管理器之后,接下来要将该管理器设置为活动的布局。
super.setContentView(layout);
其中,super表示MainActivity的父类,也就是Activity类;layout即为创建的线性布局管理器。
最后,设置布局中控件的对齐方式。
layout.setOrientation(LinearLayout.VERTICAL);
其中,LinearLayout.VERTICAL表示控件在垂直方向对齐。
2 TextView控件的添加
2.1 TextView控件的创建
通过new关键字和TextView类的构造函数实现TextView控件的创建。
final TextView text_view=new TextView(this);
2.2 TextView控件的添加
通过线性布局管理器调用addView()方法将创建的TextView控件加入到界面布局中。addView()方法的格式为
public void addView(View child)
其中,child表示要加入到布局中的管理器。以下代码将TextView控件加入到界面布局中:
layout.addView(text_view);
3 Button控件的添加
3.1 控件的创建
创建Button控件与创建TextView控件的方法相同。
Button bn = new Button(this);
3.2 控件显示内容的设置
通过Button类的setText()方法设置控件显示的内容。
bn.setText("请点击");
3.3 控件布局参数的设置
通过Button类的setLayoutParams()方法设置按键控件的布局参数,该方法的格式为
public void setLayoutParams(ViewGroup.LayoutParams params)
其中,params是ViewGroup.LayoutParams类对象。代码如下
bn.setLayoutParams(new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT
,ViewGroup.LayoutParams.WRAP_CONTENT)
);
其中,bn是创建的按键控件,通过关键字new调用ViewGroup.LayoutParams类的构造函数,创建该类的对象。ViewGroup.LayoutParams类的构造函数的两个参数分别指定了控件的宽度和高度。ViewGroup.LayoutParams.WRAP_CONTENT是ViewGroup.LayoutParams的常量字段值,表示按键控件的宽度和高度正好围绕着显示的内容。
3.4 按键控件的添加
通过线性布局管理器layout添加按键控件。
layout.addView(bn);
4 按键控件的响应
在“安卓编程学习第四天”中我们已经学到,通过Button类的setOnClickListener()方法设置按键的事件监听器,在该方法中新建一个OnClickListener接口,在该接口中重载onClick()方法实现按键响应。
bn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
text_view.setText("你点了按键");
}
});
图1为程序在模拟设备中运行的效果。
5 小结
今天我们学习了通过编程实现TextView控件和Button控件的添加及响应,通过创建并设置线性布局管理器可以将添加的控件加入到界面布局中,还可以通过编程实现控件属性的设置。