Android ToggleButton在API 25上绘制毛刺

时间:2016-11-08 16:34:08

标签: android android-custom-view android-togglebutton

我正面临这个奇怪的问题,我有一个自定义视图(使用自定义绘图)覆盖ToggleButton,并且出于某种原因覆盖了onDrawdraw方法阻止父类绘制它的一部分,这使我的视图看起来像它的故障。

此错误似乎仅在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>

结果如下: API23 vs API25

如果你仔细看截图,你可以看到右边的手机,左下角,而不是像空的绘图方法那样,你可以看到一块灰色的图画。 有人会知道造成这种情况的原因是什么吗?这是Android N上的错误吗?

0 个答案:

没有答案