Android基本组件——文本框和编辑框
Android 中提供两种基本组件:
<1>文本框(TextView),用于在屏幕显示文本 ;<2>编辑框(EditView),用于在屏幕显示可编辑的文本框。
(其中,EditView是TextView的子类)
文本框
在Android中,文本框使用TextView表示,用于在屏幕上显示文本。于Java的文本框不同,TextView相当于Java的标签(JLable)。需要说明的是,Android中的文本框可以 显示单行文字,也可以显示多行文字,还可以显示带图像的文本 。在Android中,可以使用两种方法向屏幕添加文本框。
<1>通过XML布局文件中使用<TextView>标记添加
<2>在Java文件中,使用new关键字创建。
(推荐使用第一种方法)
通过<TextView>标记在XML布局文件中添加文本框,其基本语法为:
<TextView
属性列表
>
</TextView>
TextView 支持的常用XML属性如下(常见):
XML属性 | 描述 |
android:autoLink | 用于指定是否将指定格式的文本转换为可单机的超链接形式。其属性值有none、web、email、phone、map和all |
android:drawableBottom | 用于在文本框文本的底部绘制指定图像,改图像可以是放在res/drawable目录先的图片,通过"@drawable/文件名(不包含文件拓展名)"设置 |
android:drawableLeft | 用于在文本框文本的左侧绘制指定图像,改图像可以是放在res/drawable目录先的图片,通过"@drawable/文件名(不包含文件拓展名)"设置 |
android:drawableRight | 用于在文本框文本的右侧绘制指定图像,改图像可以是放在res/drawable目录先的图片,通过"@drawable/文件名(不包含文件拓展名)"设置 |
android:drawableTop | 用于在文本框文本的顶部绘制指定图像,改图像可以是放在res/drawable目录先的图片,通过"@drawable/文件名(不包含文件拓展名)"设置 |
android:gravity |
用于设置文本框文本对齐方式,可选值有top、buttom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical和clip_horizontal等。这些属性值可以同时指定,各属性用竖线隔开。例如:要制定组件靠右下角对其,可以使用属性right|bottom。
|
android:hint | 用于设置当前文本框内容为空时,默认显示的提示文本。 |
android:inputType | 用于指定当前文本框显示内容的文本类型,可选值有textPassword、textEmailAddress、phone、date等,可以同时指定多个,使用“|"分割。 |
android:singleLine | 用于指定该文本框是否为单行模式,其 值为true或者false,为true表示该文本框不会换行,当文本框中文本呢超过一行时,其超出的部分就会被省略。同时在尾部添加"..." |
android:text | 用于指定该文本框中显示的文本内容,可以直接在该属性中指定,也可以通过在string.xml文件中定义该文本常量的方式制定。 |
android:textColor | 用来设置文本框中的颜色,其属性可以使#rgb、#argb、#rrggbb、#aarrggbb格式制定的颜色量 |
android:textSize | 用来设置文本框中文本的大小,其属性由代表大小的数值和单位组成,其单位可以使px、pt、sp和in等 |
android:width | 用于指定文本的宽度,以像素为单位 |
android:height | 用于指定文本的高度,以像素为单位 |
实例:实现文本框中的E-mail地址添加超链接、显示带图像的文本、显示不同颜色的单行文本和多行文本。(源码下载:点击打开链接)
(1)修改新建项目目录下的res/layout中的布局文件activity_main.xml,将默认的相对布局管理器修改为线性布局管理器,并修改默认的TextView组件高度和对其中E-mail格式文本设置超链接。
修改后为:
<LinearLayout 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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:orientation="vertical"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/hyperlink"
android:autoLink="web"
android:height="50px"/>
</LinearLayout>
修改res/values中的文件string.xml,添加hyperlink:
<string name="hyperlink">点击进入超链接http://sina.cn</string>
(2)在默认的TextView组件后面添加一个TextView组件,设置该组件显示带有图片的文本(图片在文本下方,具体代码如下):(需要拷贝图片test.png到目录“………………\workspace\Test_3_11\res\drawable-mdpi”)
<TextView
android:layout_width="wrap_content"
android:id="@+id/textView1"
android:text="带图片的TextView"
android:drawableTop="@drawable/test"
android:layout_height="wrap_content"/>
(3)步骤2的 基础上添加TextView组建的后面两个TextView组件,一个设置为可多行显示文本(默认),一个设置为单行显示,并将这两个组件设置为不同颜色:
<TextView
android:id="@+id/textView2"
android:textColor="#0f0"
android:textSize="20px"
android:text="多行文本:今天天气不错,是一个晴朗的日子,我的心情很好!"
android:width="300px"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/textView3"
android:textColor="#f00"
android:textSize="30px"
android:text="单行文本:今天天气不错,是一个晴朗的日子,我的心情很好!"
android:width="300px"
android:singleLine="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
(4)最后效果:
点击网址部分后,进入网页(网络连接正常情况下)
编辑框
在Android中,编辑框使用EditText表示,用于在屏幕上显示文本输入框,这与Java中的文本框功能类似。需要说明的是,Android中的编辑框可以输入单行文本,也可以输入多行文本,还可以输入指定格式的文本(如密码,手机号码,E-mail地址等)
在Android中,可以使用两种方法向屏幕添加编辑框:
<1>通过XML布局文件中使用<EditText>标记添加 ;
<2>在Java文件中,通过new关键字创建 。
(建议使用第一种方法)
基本语法为:
<EditText
属性列表
>
</EditText>
由于EditText是TextView子类,所以对于上面表格列出的XML属性,同样适用于EditText组件。需要注意的是,在EditText组件中,android:inputType属性可以帮助输入框显示合适的类型。例如,需要添加密码,可将android:inputType属性值设置为textPassword。
在屏幕中添加编辑框后,还需要获取编辑框中的输入内容,这可以通过编辑框组件提供的getText()方法实现。通过该方法,先要获得编辑框组件,然后调用getText方法。例如,要获取布局文件中添加的id属性为login的编辑框的内容,可以通过下面方法实现:
EditText login = (EditText)findViewById(R.id.login)
String loginText=login.getText().toString() ;
实例:实现会员注册界面 (源码下载:点击打开链接)
(1)修改新建项目目录下的res/layout中的布局文件activity_main.xml,将默认的相对布局管理器RelativeLayout改为表格布局管理器TableLayout,删除默认的TextView,并为该表格设置背景,在该布局中添加4个TableRow表格行。
<TableLayout 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"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:id="@+id/tableLayout1"
android:background="@drawable/background"
>
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TableRow>
<TableRow
android:id="@+id/tableRow2"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TableRow>
<TableRow
android:id="@+id/tableRow3"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TableRow>
<TableRow
android:id="@+id/tableRow4"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</TableRow>
</TableLayout>
(2)在表格的第一行,添加一个用于提示信息的文本框和输入会员昵称的编辑框,并未该行单行编辑设置提示文本,具体如下:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="会员昵称"
android:height="50px"/>
<EditText
android:id="@+id/nickname"
android:hint="请输入会员昵称"
android:layout_width="400px"
android:layout_height="wrap_content"
android:singleLine="true"/>
(3)在表格第2行,添加要给用于显示提示信息的文本框和一个输入密码的密码框,具体如下:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="关联账号"
android:height="50px"/>
<EditText
android:id="@+id/account"
android:hint="输入关联QQ/微信"
android:layout_width="400px"
android:layout_height="wrap_content"/>
(4)在表格第3行,添加一个显示提示信息的文本框和一个输入密码的编辑框,具体如下:
<span style="white-space:pre"> </span><TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="输入密码"
android:height="50px"/>
<EditText
android:id="@+id/password"
android:hint=""
android:layout_width="400px"
android:layout_height="wrap_content"
android:inputType="textPassword"/>
(5)在表格第4行,添加一个显示提示信息的文本和一个输入邮箱的编辑框,具体如下:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textEmailAddress"
android:text="E-mail:"
android:height="50px" />
<EditText
android:id="@+id/email"
android:layout_width="400px"
android:layout_height="wrap_content"
android:hint="输入邮箱地址"
android:inputType="textEmailAddress"/>
(6)添加两个按钮:“注册”和“重置”
<LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<Button
android:text="注册"
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
<Button
android:text="重置"
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
(7)在主活动的onCreate()方法中,为"注册"添加一个单机监听事件,用于在用户单机“注册”按钮后,在日志面板(LogCat)中显示输出的内容 ; 为“重置”按键注册监听事件,具体如下:
package com.example.test_3_12;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText nicknameET=(EditText)findViewById(R.id.nickname);/*获取会员昵称编辑框组件*/
final EditText accountET=(EditText)findViewById(R.id.account); /*获取关联QQ/微信账号*/
final EditText pwdET=(EditText)findViewById(R.id.password); /*获取密码编辑框组件*/
final EditText emailET=(EditText)findViewById(R.id.email); /*获取E-mail编辑框组件*/
Button button1=(Button)findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String nickname=nicknameET.getText().toString();/*获取输入的会员昵称*/
String account=accountET.getText().toString(); /*获取关联QQ/微信账号编辑框组件*/
String pwd=pwdET.getText().toString(); /*获取输入的密码*/
String email=emailET.getText().toString(); /*获取输入的E-mail地址 */
Log.i("编辑框的应用","会员昵称:"+nickname);
Log.i("编辑框的应用","关联账号:"+account);
Log.i("编辑框的应用","密码:"+pwd);
Log.i("编辑框的应用","E-mail地址:"+email);
}
});
Button button2=(Button)findViewById(R.id.button2);
button2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
nicknameET.setText("") ;
accountET.setText("") ;
pwdET.setText("") ;
emailET.setText("") ;
Log.i("编辑框的应用","全部清空");
}
});
}
}
(8)最后效果:
点击"注册:,Log输出:
点击“重置”,Log输出: