【问题标题】:Selector for Buttons not working after setting backgroundResource of the button in Android在Android中设置按钮的backgroundResource后按钮的选择器不起作用
【发布时间】:2010-09-29 11:29:02
【问题描述】:

我已经通过在我的主题中指定以下选择器将它应用于我的所有按钮:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/my_btn_pressed"
    android:state_pressed="true" />
<item android:drawable="@drawable/my_btn_focussed"
    android:state_focused="true" />     
<item android:drawable="@drawable/my_btn_normal" />
</selector>

这很好用。但是我希望按钮的背景在按下按钮时保持“@drawable/my_btn_pressed”,好像是为了突出显示这是最后一个按下的按钮。因此,我在onClick() 中添加了代码来设置后台资源:

infoButton.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            infoButton.setBackgroundResource(R.drawable.my_btn_pressed);
            otherButton.setBackgroundResource(R.drawable.my_btn_normal);
        }
    });

这也可以使用“my_btn_pressed”突出显示最后按下的按钮。但是在此之后,我的选择器属性似乎不适用于其他按钮。主要是,所关注的状态根本无法区分。

知道我可以如何做到这两个,即区分按钮的聚焦、按下和正常状态,以及突出显示最后按下的按钮吗?

【问题讨论】:

    标签: android button background selector


    【解决方案1】:

    嗯,我为这个找到的解决方案可能并不正确,但我使用了这个解决方法,因为我没有其他办法!

    当关注信息按钮时,即在onFoucsChangeListener() 中,使用infoButton.setSelected(true);,类似地,将所有其他按钮设置为未选中。不要设置后台资源!

    在selector.xml中,添加一个项目

    <item android:drawable="@drawable/my_btn_focussed" 
        android:state_focused="true" /> 
    

    这应该有助于将所选按钮设置为突出显示!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      • 1970-01-01
      • 1970-01-01
      • 2019-10-13
      • 1970-01-01
      • 2012-07-28
      相关资源
      最近更新 更多