Android基本组件__文本框和编辑框

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输出:


        





猜你喜欢

转载自blog.csdn.net/yagnruinihao/article/details/41461189
今日推荐