我正面临这个奇怪的问题,我有一个自定义视图(使用自定义绘图)覆盖ToggleButton
,并且出于某种原因覆盖了onDraw
和draw
方法阻止父类绘制它的一部分,这使我的视图看起来像它的故障。
此错误似乎仅在API级别25,物理设备或模拟器上发生。
使用以下代码进行自定义切换按钮:
public class CustomToggleButton extends ToggleButton {
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public CustomToggleButton(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
}
public CustomToggleButton(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
public CustomToggleButton(Context context, AttributeSet attrs) {
super(context, attrs);
}
public CustomToggleButton(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
//nope, not drawing anything
}
@Override
public void draw(Canvas canvas) {
//nope, not drawing anything
}
}
以下简单的XML布局:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|center_horizontal"
android:text="Bottom left: buggy custom ToggleButton.\nBottom right: regular ToggleButton." />
<test.com.togglebuttonbug.CustomToggleButton
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_gravity="bottom|left"
android:textOff="B"
android:textOn="A" />
<ToggleButton
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_gravity="bottom|right"
android:textOff="B"
android:textOn="A" />
</FrameLayout>
如果你仔细看截图,你可以看到右边的手机,左下角,而不是像空的绘图方法那样,你可以看到一块灰色的图画。 有人会知道造成这种情况的原因是什么吗?这是Android N上的错误吗?