首页 > 代码库 > 第二章 吸引你的眼球—UI编程(2)

第二章 吸引你的眼球—UI编程(2)

2.1.3文本编辑—编辑框(EditText)

EditText在我们开发中也是经常要用到的组件。比如,要实现一个登录界面,需要用户输入帐号、密码、邮件等信息,这里就需要使用EditText组件来获得用户输入的内容,下面,我们就以一个登录界面为例,来看看EditText是怎么使用的。

 

1)在布局文件中定义一个TextView(用来响应按钮事件),两个EditText组件(一个用来记录用户名,一个用来记录密码)一个登录按钮和一个取消按钮,代码如下:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

    xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="match_parent"

    android:layout_height="match_parent">

    <EditText

        android:id="@+id/name_edittext"

        android:layout_width="200dp"

        android:layout_height="wrap_content"

        android:hint="请输入用户名"/>

    <EditText

        android:id="@+id/pwd_edittext"

        android:layout_width="200dp"

        android:layout_height="wrap_content"

        android:password="true"

        android:hint="请输入密码"/>

    <LinearLayout

        android:orientation="horizontal"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content">

        <Button

            android:id="@+id/ok_button"

            android:layout_width="80dp"

            android:layout_height="wrap_content"

            android:text="登录"/>

        <Button

            android:id="@+id/cancel_button"

            android:layout_width="80dp"

            android:layout_height="wrap_content"

            android:text="取消"/>

    </LinearLayout>

</LinearLayout>

 

EditText中android:hint这个属性是当用户没有输入任何内容的时候默认显示的提示信息。当然,我们也可以在代码中轻松地实现,例如:

EditText editView = (EditText)findViewById(R.id.name_edittext);

editView.setHint("请输入用户名");

 

而android:password这个属性是用于输入密码之类涉及隐私需要保密的信息。

 

2)点击“登录”按钮时,判断用户名和密码是否都已输入,若是则在TextView中显示“登录成功”,否则的话显示“请检查输入信息”;点击“取消”按钮时,将TextView和EditText中的文本全部清空,部分代码如下:

okButton = (Button)findViewById(R.id.ok_button);

        cancelButton = (Button)findViewById(R.id.cancel_button);

        nameEditText = (EditText)findViewById(R.id.name_edittext);

        pwdEditText = (EditText)findViewById(R.id.pwd_edittext);

        statusTextView = (TextView)findViewById(R.id.status_textview);

        okButton.setOnClickListener(new View.OnClickListener() {

            

             @Override

             public void onClick(View v) {

                 if(nameEditText.length()==0||pwdEditText.length()==0){

                     statusTextView.setText("请检查输入信息");

                 }else{

                     statusTextView.setText("登录成功");

                 }

             }

        });

        cancelButton.setOnClickListener(new View.OnClickListener() {

            

             @Override

             public void onClick(View v) {

                 nameEditText.setText("");

                 pwdEditText.setText("");

                 statusTextView.setText("");

             }

        });

 

我们来看看效果,如图2-6、2-7、2-8所示:

技术分享

图2-6 初始界面

 

技术分享

图2-7 输入信息不完整

 

技术分享

图2-8 登录成功

 

经验分享:

很多时候,EditText组件会默认获得焦点,并弹出软键盘,但是我们并不想要这样的效果。这个时候,可以在布局文件中加入以下代码来避免这样的情况出现:

<LinearLayout

    android:layout_width="0dp"

    android:layout_height="0dp"

    android:focusableInTouchMode="true"

    android:focusable="true" />

第二章 吸引你的眼球—UI编程(2)