AS之onFocusChangeEvent

OnFocusChangeListener接口用于处理控件焦点发生改变的事件,如对某控件注册了该监听器,则当该控件失去焦点或者获得焦点时都会触发OnFocusChangeListener接口中的回调方法onFocusChange(),接口中需要实现的方法的定义方式如下:

public void onFocusChange(View v, boolean hasFocus)

参数v表示触发焦点发生改变事件的事件源。

参数hasFocus表示v是否获取焦点

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
    <EditText
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:id="@+id/mobile"
        android:text="手机号码"
        android:inputType="phone"
        android:ems="10"/>
    <EditText
        android:layout_width="200dp"
        android:layout_height="wrap_content"
        android:id="@+id/address"
        android:text="地址"
        android:ems="10"
        android:inputType="textPostalAddress"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/showText"
        android:text="焦点变焦情况"/>
</LinearLayout>

android:ems=“10” 表示显示10个字符长度

package com.example.a4_71;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.EditText;
import android.widget.TextView;

public class MainActivity<hasFocus> extends AppCompatActivity {
    private EditText etMobile=null;
    private EditText etAddress=null;
    private TextView showTextView=null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        etMobile=(EditText) findViewById(R.id.mobile);
        etAddress=(EditText) findViewById(R.id.address);
        showTextView=(TextView) findViewById(R.id.showText);
         //注册监听器
        etMobile.setOnClickListener(new MobileOnClickListener());
        etMobile.setOnFocusChangeListener(new MobileOnFocusChangeListener());
        etAddress.setOnClickListener(new AddressOnClickListener());
        etAddress.setOnFocusChangeListener(new AddressOnFocusChangeListener());
        }
        private class MobileOnClickListener implements OnClickListener {
        public  void  onClick(View view){
            etMobile.setText("");        点击时清空
        }
    }
     //MobileOnFoucusChangeListene焦点事件
    private class MobileOnFocusChangeListener implements View.OnFocusChangeListener {
        public void onFocusChange(View view, boolean hasFocus) {
            if (view.getId() == etMobile.getId()) {
                if (hasFocus) {
                    showTextView.setText("手机号码组件获得了焦点");
                } else {
                    showTextView.setText("手机号码组件失去了焦点");
                }
            }
        }
    }
    private class AddressOnClickListener implements OnClickListener {
        public  void  onClick(View view){
            etAddress.setText("");
        }
    }

    private class AddressOnFocusChangeListener implements View.OnFocusChangeListener {
        public void onFocusChange(View view, boolean hasFocus) {
            if (view.getId() == etAddress.getId()) {
                if (hasFocus) {
                    showTextView.setText("地址组件获得了焦点");
                } else {
                    showTextView.setText("地址组件失去了焦点");
                }
            }
        }
    }
}

显示如图
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值