Android:绘制不显示片段视图顶部

时间:2016-07-10 23:26:24

标签: android xml android-fragments canvas paint

我在片段视图中有一个绘画和画布的实例,我希望能够随意绘制它。

问题:我试图在我的片段视图背景上绘制的圆形形状没有正确显示;圆形被剪裁,好像它被绘制在片段后面一样。

下面,橙色视图与我的片段是分开的,不要指望在那里看到蓝色圆圈。然而,白色视图是我的片段,我希望在它上面绘制蓝色圆圈完成。相反,我在白色片段视图中看到一个剪裁的蓝色圆圈(看起来像一个矩形)。即使我没有为此视图设置android:background xml属性,蓝色圆圈仍会显示为已剪裁。 enter image description here

我需要在代码中更改什么才能让我的画布形状显示在片段视图的顶部(重叠)?

FragmentNeckDisplayMenu.java

public class FragmentNeckDisplayMenu extends Fragment {
    private static View v;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        v = inflater.inflate(R.layout.menu_fragment_neck_display,container,false);

        //Configure Paint Canvas
        LinearLayout paintSurface = (LinearLayout)v.findViewById(R.id.canvas);
        paintSurface.addView(new NeckGlow(getActivity()));
    }
    //paint test
    class NeckGlow extends View {
        Paint mPainter = new Paint(Paint.ANTI_ALIAS_FLAG);

        public NeckGlow(Context context) {
            super(context);
        }

        @Override
        public void onDraw(Canvas canvas) {
            super.onDraw(canvas);   
            mPainter.setColor(Color.BLUE);
            mPainter.setAlpha(255);
            canvas.drawCircle(25, 900, 200, mPainter);
        }
    }
}

menu_fragment_neck_display.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/canvas"
    android:background="#FFFFFF">
    <Button
        android:id="@+id/menuIcon"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="64dp"
        android:text="Menu"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_gravity="bottom" />
</LinearLayout>

1 个答案:

答案 0 :(得分:0)

您正在使用方向水平的LinerLayout(默认)。这意味着Canvas正在Buttton旁边布局。您可以尝试使用FrameLayout,并在按钮顶部绘制 画布。