从零开始学android:Android事件处理—焦点事件
2013-11-27 23:11
381 查看
焦点事件
焦点事件是指针对于一个组件的状态的监听,例如,现在有两个文本输入组件(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; @Override protected 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()); } @Override public 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{ @Override public void onClick(View view) { MainActivity.this.edit.setText(""); //清空文本 } } private class OnFocusChangeListenerImpl implements OnFocusChangeListener{ @Override public 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("文本输入组件失去焦点,输入内容不能为空。"); } } } } } }
展示效果:
相关文章推荐
- Android中设计具有背景图的按钮—ImageButton的焦点及事件处理
- 第23章、OnFocuChangeListener焦点事件(从零开始学Android)
- 开发android机顶盒应用 事件,焦点处理
- 第18章、基于监听器的事件处理(从零开始学Android)
- Android 事件传递与焦点处理(tv)
- 从零开始学android:Android事件处理—单击事件
- 第23章、OnFocuChangeListener焦点事件(从零开始学Android)
- 第23章、OnFocuChangeListener焦点事件(从零开始学Android)
- 从零开始学android:Android事件处理—下拉列表框与OnItemSelectedListener
- Android中设计具有背景图的按钮—ImageButton的焦点及事件处理
- 从零开始学android:Android事件处理—触摸事件
- 开发android机顶盒应用 事件,焦点处理
- 从零开始学android:Android事件处理—长按事件
- 从零开始学android:Android事件处理—单选钮与OnCheckedChangeListener
- 从零开始学android<android事件的处理方式.二十四.>
- Android--ImageButton的焦点及事件处理
- Android--ImageButton的焦点及事件处理
- 开发android机顶盒应用 事件,焦点处理
- 第18章、基于监听器的事件处理(从零开始学Android)
- android事件处理,把事件通知到焦点窗口,(5)