2016-07-10 7 views
0

Ich habe eine Instanz von einer Farbe und Leinwand in einer Fragmentansicht, und ich möchte in der Lage sein, darauf nach Belieben zu zeichnen.Android: Farbe wird nicht auf der Fragmentansicht angezeigt

Das Problem: meine kreisförmigen Formen, die ich versuche, über den Hintergrund meiner Fragmentansicht zu malen, werden nicht richtig angezeigt; Der Kreis wird abgeschnitten, als würde er hinter das Fragment gezogen.

Unten ist die orange Ansicht von meinem Fragment getrennt, erwarten Sie nicht, den blauen Kreis dort zu sehen. Die weiße Ansicht ist jedoch mein Fragment und ich erwarte, dass der blaue Kreis vollständig darüber gezeichnet wird. Stattdessen sehe ich einen abgeschnittenen blauen Kreis (sieht wie ein Rechteck aus) in der weißen Fragmentansicht. Selbst wenn ich das Attribut android: background xml für diese Ansicht nicht einstelle, erscheint der blaue Kreis immer noch abgeschnitten.

Was muss ich in meinem Code ändern, damit meine Canvas-Formen oben auf der Fragmentansicht angezeigt werden (überlappend)?

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> 

Antwort

0

Sie sind eine LinerLayout mit horizontaler Ausrichtung (default) verwendet wird. Das bedeutet, dass Canvas gerade neben dem Buttton platziert wird. Sie können versuchen, FrameLayout und die Leinwand sollte oben auf der Schaltfläche gezeichnet werden.

Verwandte Themen