android 点击Edittext时hint值不自动隐藏问题

来源:互联网 发布:淘宝网在哪里买基金 编辑:程序博客网 时间:2024/06/05 17:08

android 点击Edittext时hint值不自动隐藏问题

当我们做注册界面或登录等界面时,需要在EditText里设置hint的值,来提醒用户该输入什么东西。但Android的EditText有一个不好的地方在于,当我们点击EditText时,它不会自动隐藏hint值,本文主要就是解决这个问题。

1.在这里,需要用到几个属性值:

 android:focusable="true"//是否可聚焦 android:focusableInTouchMode="true"//是否是触摸方式获取焦点

要想让一个EditText默认状态为没有获得焦点,则必须在它的父布局里写入上述两个属性。

直接贴代码:
首先建立一个register.xml文件;

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:background="@color/back_gray"    android:id="@+id/main_ll"    android:orientation="vertical" >    <LinearLayout android:orientation="horizontal"        android:background="@color/white"         android:layout_width="fill_parent"         android:layout_height="@dimen/height_50">        <ImageView android:id="@+id/image_back"            android:layout_width="30dp"             android:layout_height="wrap_content"             android:layout_marginLeft="15.0dip"             android:background="@color/white"            android:src="@drawable/row2" />        <TextView android:textSize="@dimen/text_size_20"             android:textColor="#000000"            android:background="@color/white"            android:gravity="center"             android:layout_width="fill_parent"             android:layout_height="fill_parent"             android:text="注册" />    </LinearLayout>    <LinearLayout         android:layout_marginTop="20dp"        android:background="@color/white"        android:layout_width="match_parent"        android:layout_height="40dp"        android:orientation="horizontal"        android:focusable="true"        android:focusableInTouchMode="true"        >        <ImageView android:layout_width="25dp"            android:layout_gravity="center"            android:layout_margin="10dp"            android:layout_height="25dp"            android:src="@drawable/phonenum"/>        <EditText             android:id="@+id/phonenum_et"            android:layout_width="match_parent"            android:background="@null"            android:layout_height="wrap_content"            android:layout_gravity="center_vertical"            android:textColor="#000000"            android:hint="请输入您的手机号码"/>    </LinearLayout>    <LinearLayout android:layout_width="match_parent"        android:background="@color/white"        android:layout_height="1dp"        android:orientation="horizontal">        <TextView android:layout_width="match_parent"            android:layout_height="1dp"            android:background="@color/back_gray"            android:layout_marginLeft="8dp"            android:layout_marginRight="8dp"/>    </LinearLayout>     <LinearLayout         android:background="@color/white"        android:layout_width="match_parent"        android:layout_height="40dp"        android:orientation="horizontal"        >        <ImageView android:layout_width="25dp"            android:layout_gravity="center"            android:layout_margin="10dp"            android:layout_height="25dp"            android:src="@drawable/yanzheng"/>        <EditText             android:id="@+id/putems_et"            android:layout_width="0dp"            android:layout_weight="2"            android:background="@null"            android:editable="true"            android:layout_height="wrap_content"            android:layout_gravity="center_vertical"            android:textColor="#000000"            android:hint="请输入短信验证码"/>        <Button android:id="@+id/btn"            android:layout_marginTop="5dp"            android:layout_marginBottom="5dp"            android:layout_marginRight="10dp"            android:layout_width="wrap_content"            android:textSize="10dp"            android:textColor="#7cfc00"            android:background="@drawable/btn_shape"            android:layout_gravity="center_vertical"            android:layout_height="wrap_content"            android:text="获取验证码"/>    </LinearLayout>     <LinearLayout android:layout_width="match_parent"        android:background="@color/white"        android:layout_height="1dp"        android:orientation="horizontal">        <TextView android:layout_width="match_parent"            android:layout_height="1dp"            android:background="@color/back_gray"            android:layout_marginLeft="8dp"            android:layout_marginRight="8dp"/>    </LinearLayout>    <LinearLayout         android:background="@color/white"        android:layout_width="match_parent"        android:layout_height="40dp"        android:orientation="horizontal"        >        <ImageView android:layout_width="25dp"            android:layout_gravity="center"            android:layout_margin="10dp"            android:layout_height="25dp"            android:src="@drawable/pwd"/>        <EditText             android:id="@+id/pwd_et"            android:layout_width="match_parent"            android:background="@null"            android:editable="true"            android:layout_height="wrap_content"            android:layout_gravity="center_vertical"            android:textColor="#000000"            android:hint="请输入密码"/>    </LinearLayout>         <Button             android:id="@+id/button1"             android:layout_marginTop="20dp"             android:layout_marginLeft="10dp"             android:layout_marginRight="10dp"             android:layout_width="match_parent"             android:layout_height="wrap_content"             android:background="@drawable/btn_shape_register"             android:text="立即注册" /></LinearLayout>

在RegisterAct中:

package com.yds.newpowerbike.activity;import com.yds.newpowerbike.R;import android.app.Activity;import android.os.Bundle;import android.view.MotionEvent;import android.view.View;import android.view.View.OnClickListener;import android.view.View.OnFocusChangeListener;import android.view.View.OnTouchListener;import android.widget.EditText;import android.widget.LinearLayout;public class RegisterAct extends Activity{    private EditText phonenum_et,putems_et,pwd_et;    private LinearLayout ll;    @Override    protected void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_register);        init();    }    private void init(){        phonenum_et = (EditText) findViewById(R.id.phonenum_et);        putems_et = (EditText) findViewById(R.id.putems_et);        pwd_et = (EditText) findViewById(R.id.pwd_et);        ll = (LinearLayout) findViewById(R.id.main_ll);        phonenum_et.setOnFocusChangeListener(onFocusChangeListener);        putems_et.setOnFocusChangeListener(onFocusChangeListener);        pwd_et.setOnFocusChangeListener(onFocusChangeListener);        ll.setOnTouchListener(onTouchListener);    }    /**     * 给布局加触摸监听,当点击EditText之外的地方时     * EditText失去焦点     */    private OnTouchListener onTouchListener = new OnTouchListener() {        @Override        public boolean onTouch(View v, MotionEvent event) {            // TODO Auto-generated method stub            ll.setFocusable(true);            ll.setFocusableInTouchMode(true);            ll.requestFocus();//布局获得焦点            return false;        }    };    /**     * 下面的OnFocusChangeListener的作用主要是     * 点击EditText时获取焦点并隐藏hint值     * */    private OnFocusChangeListener onFocusChangeListener = new OnFocusChangeListener() {        @Override        public void onFocusChange(View v, boolean hasFocus) {            // TODO Auto-generated method stub            switch (v.getId()) {            case R.id.phonenum_et:                setHintEt(phonenum_et,hasFocus);                break;            case R.id.putems_et:                setHintEt(putems_et,hasFocus);                break;            case R.id.pwd_et:                setHintEt(pwd_et, hasFocus);                break;            default:                break;            }        }    };    private void setHintEt(EditText et,boolean hasFocus){        String hint;        if(hasFocus){            hint = et.getHint().toString();            et.setTag(hint);            et.setHint("");        }else{            hint = et.getTag().toString();            et.setHint(hint);        }    }}

运行截图:
这里写图片描述

0 0
原创粉丝点击