想要監聽一個控件的焦點變化情況,發現了一個
view.setOnFocusChangeListener(new OnFocusChangeListener() { ...... }
現在寫一個小demo,學習一下這個方法的使用。看如下代碼
布局xml
<RelativeLayout android:id="@+id/abc" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <Button android:id="@+id/bt" android:layout_width="200dp" android:layout_height="100dp" android:layout_centerInParent="true" android:textColor="#ffffff" android:gravity="center" android:background="@drawable/select" android:focusableInTouchMode="true" /> <ImageButton android:id="@+id/bt1" android:layout_width="100dp" android:layout_height="100dp" android:layout_below="@+id/bt" android:focusableInTouchMode="true" android:src="@drawable/select" /> <ImageButton android:layout_width="100dp" android:layout_height="100dp" android:layout_alignParentRight="true" android:layout_below="@+id/bt" android:focusableInTouchMode="true" android:src="@drawable/select" /> </RelativeLayout>
代碼
package com.example.alert; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.ActionMode; import android.view.View; import android.view.View.OnFocusChangeListener; import android.widget.Button; import android.widget.ImageButton; public class HeadSetActivity extends Activity { private ImageButton imageButton; private Button button; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageButton = (ImageButton) findViewById(R.id.bt1); button = (Button) findViewById(R.id.bt); imageButton.setOnFocusChangeListener(new OnFocusChangeListener() { @Override public void onFocusChange(View arg0, boolean arg1) { // TODO Auto-generated method stub button.setText("focus==="+arg1); } }); } }
我們看下運行結果

總結如下
1.這個方法的使用非常簡單,也就是當view的焦點狀態發生變化的時候,這個事件就會觸發。參數arg1代表的是當前控件的焦點狀態
2.xml中有一個屬性
android:focusableInTouchMode="true"
它代表的是當點擊這個控件的時候,這個控件是否獲得焦點
