AMe*_*rle 8 android drawable android-drawable android-4.2-jelly-bean
任何人都使用了新的问题,ShapeDrawable()在StateListDrawable在Android 4.2?我曾经这样做过:
ShapeDrawable bg = new ShapeDrawable(); //default Ctor
ShapeDrawable hl = new ShapeDrawable();
hl.getPaint().setColor(color1);
bg.getPaint().setColor(color2);
StateListDrawable s1 = new StateListDrawable();
s1.addState(new int[]{android.R.attr.state_pressed}, hl);
s1.addState(new int[]{}, bg);
Run Code Online (Sandbox Code Playgroud)
但这在Android 4.2中不再起作用,抛出nullpointerexception:
java.lang.NullPointerException
at android.graphics.drawable.ShapeDrawable.mutate(ShapeDrawable.java:387)
at android.graphics.drawable.DrawableContainer.selectDrawable(DrawableContainer.java:315)
at android.graphics.drawable.StateListDrawable.onStateChange(StateListDrawable.java:106)
at android.graphics.drawable.StateListDrawable.addState(StateListDrawable.java:89)
Run Code Online (Sandbox Code Playgroud)
我通过更改我的构造函数来修复问题ShapeDrawable:
ShapeDrawable bg = new ShapeDrawable(new RectShape());
ShapeDrawable hl = new ShapeDrawable(new RectShape());
Run Code Online (Sandbox Code Playgroud)
现在这很好用,但我想知道为什么这对默认构造函数不起作用 =)
感谢您的时间 :)
小智 7
DrawableContainer.selectDrawable()Android 4.2中的实现已经改变,ShapeDrawable必须使用带有args的构造.
如果使用默认的构造函数,调用的时候mutate() mShape是null,这样mShape.clone()将抛出CloneNotSupportedException并返回null.所以你得到一个NullPointerException.
| 归档时间: |
|
| 查看次数: |
1326 次 |
| 最近记录: |