ImageButton focusable="false"不起作用

来源:互联网 发布:家庭网络布线交换机 编辑:程序博客网 时间:2024/05/17 23:56

想要让一些控件刚开始时无法获取焦点,然后过一段时间又可以重新获取焦点。对Button来说很轻松就实现了,无非就是刚开始在xml文件里设置focusable=false,条件合适时再动态设置focusable为true,但是,对于ImageButton来说这种方法却不起作用(动态设置是可以的,但xml无效)!

怎么办呢?我们该如何让ImageButton创建时就无法获取焦点呢?我通过自定义控件来实现这个效果,这个控件继承自ImageButton,但是在构造方法时就默认该控件是无焦点的,这样,当你在xml文件中添加该控件时,同时也就表明这个控件focusable="false",具体代码如下:

public class MenuButton extends ImageButton{public MenuButton(Context context){super(context);setFocusable(false);setFocusableInTouchMode(false);}public MenuButton(Context context,AttributeSet attrs){super(context, attrs);setFocusable(false);setFocusableInTouchMode(false);}public MenuButton(Context context, AttributeSet attrs, int defStyle) {super(context, attrs, defStyle);// TODO Auto-generated constructor stubsetFocusable(false);setFocusableInTouchMode(false);}public void setFocus(boolean focus){setFocusable(focus);setFocusableInTouchMode(focus);}}
当想要再次获取焦点时,只需menuButton.setFocus(true)即可

0 0
原创粉丝点击