KK_*_*585 1 android android-layout
这是我的代码:
public void setHoverEffect(final Button button,int normalImageId, int hoverImageId) {
if (button != null)
{
StateListDrawable stateListDrawable = new StateListDrawable();
stateListDrawable.addState(new int[]{ }, getResources().getDrawable(normalImageId));
stateListDrawable.addState(new int[]{android.R.attr.state_pressed}, getResources().getDrawable(hoverImageId));
button.setBackgroundDrawable(stateListDrawable);
}
}
Run Code Online (Sandbox Code Playgroud)
当我使用上面的代码时,只有正常图像显示为背景,当我按下按钮时,它没有显示悬停图像.
当我使用selector.xml
如下所示的文件并将其设置为背景时,它工作正常.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/btn_ok_h"> </item>
<item android:drawable="@drawable/btn_ok"> </item>
</selector>
Run Code Online (Sandbox Code Playgroud)
我想动态地这样做,以避免为我的应用程序中的每个按钮创建选择器xml文件.我无法弄明白我的代码错误或我必须指定额外属性... :(
@KK你做错了一些正确的方法
看我的代码
public void selector(Button b,int pressed_image,int normal_image )
{
StateListDrawable states = new StateListDrawable();
states.addState(new int[] { android.R.attr.state_pressed }, getResources().getDrawable(pressed_image));
states.addState(new int[] {}, getResources().getDrawable(normal_image));
b.setBackgroundDrawable(states);
}
Run Code Online (Sandbox Code Playgroud)
你可以说这段代码与你的代码相同,但有一些区别.我已经写了states.addState(new int[] { android.R.attr.state_pressed }, getResources().getDrawable(pressed_image));
前行states.addState(new int[] {}, getResources().getDrawable(normal_image));
首先尝试这段代码,我已经测试了这段代码4-5次,然后在这里发布.我真的不知道为什么改变行代码工作正常.
归档时间: |
|
查看次数: |
2551 次 |
最近记录: |