在Android中,最常用的控件主要包括TextView控件、EditView控件和Button控件。下面对其分别进行介绍。
TextView类继承自View类,TextView控件的功能是向用户显示文本的内容,但不允许编辑,而其子类EditText允许用户进行编辑。
创建TextView控件最常用的方法就是在Layout文件中定义,下面的代码定义了一个文本内容为“欢迎选择DIY”,宽度和高度都是内容的宽和高。
<TextView
android:layout_width="wrap_content"
android:layout_depth="wrap_content"
android:text="欢迎选择DIY" />
TextView常用属性见表4-1。
表4-1 TextView常用属性
续表
EditText和TextView的功能基本类似,它们之间的主要区别在于EditText提供了可编辑的文本框。比如,要实现一个登录界面,需要用户输入账号、密码等信息,然后获得用户输入的内容,把它交给服务器来判断。下面的代码定义了一个提示内容为“用户名”,id为username的控件:
<EditText
android:id="@+id/username"
android:layout_width="match_parent"
android:layout_depth="wrap_content"
android:hint="用户名"/>
EditText的常用属性见表4-2。
表4-2 EditText常用属性
续表
Button继承了TextView。它的功能就是提供一个按钮,该按钮可以供用户单击,当用户对按钮进行操作时,触发相应事件。
所谓事件,就是用户与界面交互时所触发的操作,如鼠标的单击、双击、长按等。在Android中,这些事件都将被传送到用来专门处理事件的事件处理器。在Java程序中,实现与用户交互功能的控件都需要通过事件进行处理,需要指定控件所用的事件监听器。同理,Android也需要设置事件监听器。
下面通过一个示例程序来处理Button的事件。
单击Button,执行相关操作,如显示用户输入的用户名和密码,如图4-5所示。
图4-5
在Android中需要设置Button的监听事件,首先在Main Activty.Java中添加三个控件变量。
private Button logindemo;
private EditText username;
private EditText password;
按钮的监听主要有4种方法。
(1)内部定义1
在loginButton的setOnClickLister方法中直接定义事件,先使用getText方法获取用户名和密码,然后使用Toast进行消息的推送。
loginButton=(Button)findViewById(R.id.login_button);
usernameET=(EditText)findViewById(R.id.username);
passwordET=(EditText)findViewById(R.id.password);
loginButton.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v){
String msg=" 您输入的用户名是"+usernameET.getText()+",密码是"+passwordET.getText();
Toast.makeText(LoginActivity.this,msg,Toast.LENGTH_SHORT).show();
}
});
上面的示例中使用了Toast进行了信息的显示。Toast是Android提供的“快显讯息”类,它的用途很多,使用起来非常简单。例如,当退出应用程序时,可以用它显示用户“需要更新”,或者在输入框中输入文本时,可以提示用户“最多输入20个字符”等。
Toast中有两个关于Toast显示时间长短的常量,如表4-3所示。
表4-3 Toast常量
(2)内部定义2
与第1种方式略有区别,在loginButton的setOnClickLister方法中使用listener,而listener是在后面定义的OnClickListener类型的对象。
loginButton.setOnClickListener(listener);
Button.OnClickListener listener=new Button.OnClickListener(){//创建监听对象
public void onClick(View v){
String msg="您输入的用户名是"+usernameET.getText()+",密码是"+passwordET.getText();
Toast.makeText(LoginActivity.this,msg,Toast.LENGTH_SHORT).show();
}
};
(3)接口方式
在类的声明中加入 implements View.OnClickListener,然后使用 loginButton.setOnClick Listener(this)进行监听,最后定义onClick方法进行监听事件的处理。此种方法适合Activity中有多个控件需要监听的情景,根据传入的View的ID进行不同控件事件的监听。
public class LoginActivity extends AppCompatActivity implements View.OnClickListener{}
loginButton.setOnClickListener(this);
public void onClick(View v){
switch(v.getId()){
case R.id.login_button:
String msg="您输入的用户名是"+usernameET.getText()+",密码是"+passwordET.getText();
Toast.makeText(LoginActivity.this,msg,Toast.LENGTH_SHORT).show();
break;
}
}
(4)android:onClick
直接在按钮的布局代码中添加onClick属性,然后在Activity中定义相应方法即可。
<Button
android:id="@+id/login_button"
android:layout_width="wrap_content"
android:layout_depth="wrap_content"
android:text="登录"
android:onClick="onLoginClick"/>
public void onLoginClick(View v){
String msg=" 您输入的用户名是"+usernameET.getText()+",密码是"+passwordET.getText();
Toast.makeText(LoginActivity.this,msg,Toast.LENGTH_SHORT).show();
}
【例4-1】 以登录界面为例,构建LoginDemo 应用,效果如图4-1 所示。
实现步骤如下:
(1)创建新项目:项目名称LoginDemo,公司域名neusoft.edu.cn,如图4-6所示。Activity的配置如图4-7所示。
图4-6 创建LoginDemo
图4-7 配置Activity
(2)添加控件:在content_login.xml中添加用户名、密码和登录按钮,其中用户名和密码使用EditText控件,登录按钮使用Button控件,布局代码如下:
<TextView
android:layout_width="wrap_content"
android:layout_depth="wrap_content"
android:text="欢迎选择DIY" />
<EditText
android:id="@+id/username"
android:layout_width="match_parent"
android:layout_depth="wrap_content"
android:hint=" 用户名"/>
<EditText
android:id="@+id/password"
android:layout_width="match_parent"
android:layout_depth="wrap_content"
android:hint="密码"
android:password="true"/>
<Button
android:id="@+id/login_button"
android:layout_width="wrap_content"
android:layout_depth="wrap_content"
android:text="登录" />
(3)Design界面:单击“Design”选项卡,界面如图4-8所示。
图4-8 content_login.xml的
(4)运行该项目,查看结果。