Bất kỳ ai khác gặp sự cố khi sử dụng ShapeDrawable()
mới trong một StateListDrawable
trong android 4.2? Tôi sử dụng để làm điều này:Sử dụng mặc định ShapeDrawable trong một StateListDrawable trong 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);
Nhưng điều này không có tác dụng nữa trong Android 4.2 , ném một 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)
Tôi cố định vấn đề này bằng cách thay đổi các nhà xây dựng của ShapeDrawable
tôi:
ShapeDrawable bg = new ShapeDrawable(new RectShape());
ShapeDrawable hl = new ShapeDrawable(new RectShape());
Bây giờ này hoạt động tuyệt vời, nhưng tôi muốn biết tại sao điều này không làm việc với các nhà xây dựng mặc định =)
Cảm ơn bạn đã dành thời gian :)