从零开始学android:Android事件处理—焦点事件

来源:互联网 发布:金蝶软件多少钱 编辑:程序博客网 时间:2024/05/17 00:14

焦点事件

焦点事件是指针对于一个组件的状态的监听,例如,现在有两个文本输入组件(editA和editB),当用户选中editA组件准备输入数据的时候,对于editA就表示获得了焦点,如图6-11所示,而当用户现在离开了editA而要输入editB时,则editA将丢失焦点,同时对应的editB将获得焦点。



在android.view.View类之中专门提供了一个“View.OnFocusChangeListener”接口用于监听焦点改变事件,而所有的组件上都存在有监听焦点变化的方法:
监听焦点变化:public void setOnFocusChangeListener(View.OnFocusChangeListener l)

范例:

布局文件

<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:id="@+id/edit"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="请输入查询内容"        /><EditText     android:id="@+id/msg"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:text="www.baidu.com"    />    <TextView     android:id="@+id/txt"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    /></LinearLayout>

程序文件:

package com.richard.onfocuschangelistener;import android.os.Bundle;import android.app.Activity;import android.view.Menu;import android.view.View;import android.view.View.OnClickListener;import android.view.View.OnFocusChangeListener;import android.widget.EditText;import android.widget.TextView;public class MainActivity extends Activity {private EditText edit = null;private TextView txt = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main); this.edit = (EditText) super.findViewById(R.id.edit);this.txt = (TextView) super.findViewById(R.id.txt);this.edit.setOnFocusChangeListener(new OnFocusChangeListenerImpl());this.edit.setOnClickListener(new OnClickListenerImpl());}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}private class OnClickListenerImpl implements OnClickListener{@Overridepublic void onClick(View view) {MainActivity.this.edit.setText("");//清空文本}}private class OnFocusChangeListenerImpl implements OnFocusChangeListener{@Overridepublic void onFocusChange(View view, boolean hasFocus) {if(view.getId() == MainActivity.this.edit.getId()){if(hasFocus){MainActivity.this.txt.setText("文本输入获得焦点");//设置显示文字}else{if(MainActivity.this.edit.getText().length()>0) {//判断输入数据长度MainActivity.this.txt.setText("文本输入组件失去焦点,输入内容合法.");} else {MainActivity.this.txt.setText("文本输入组件失去焦点,输入内容不能为空。");}}}}}}

展示效果:




原创粉丝点击