Android开发中关于focusable的一些注意事项
分类:Android
阅读 (3,923)
Add comments
1月 212013
我们有时会在开发中,使用按钮的focus选项来实现类似Tab标签页的效果,当用户按下某个按钮后,这个按钮就显示另外一种被按下的效果,以表示用户当前浏览的是哪种类型数据。允许组件有焦点效果首先要设置focusable属性为true,然后把android:focusableInTouchMode属性也设置为true。
需要注意的是,当设置组件可以获得焦点的时候,这个组件就不能响应android:onClick事件了,如果你把实现功能的代码写到onClick事件里的话,是不能看到程序执行的。那么这时候我们就得用组件的setOnFocusChangeListener来设置一个事件来监听组件获得和失去焦点的状态,然后把相关的代码放到这个事件里。下面是一个代码片断:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button btnUser = (Button)findViewById(R.id.btnShowUserList); btnUser.setOnFocusChangeListener(new OnFocusChangeListener() { public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { showUserListActivity(v); } } }); } |
其中hasFocus为true时为组件获得焦点,被按下的状态,为false时为其他组件获得焦点此组件失去焦点时触发。