LayoutInfalter көмегімен xml орналасуы мүмкін емес. Мен не істеп жатырмын?

Xml файлынан орналасуды көрсету керек және оның үстіне вектор негізіндегі суретті салу керек. Егер төмендегі код орындалса, онда бәрі көрсетіледі, бірақ орналасу. Неліктен? Мен не істеп жатырмын?

public class About extends Activity 
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    //setContentView(R.layout.about); 
    setContentView(new GraphicsView(this));
}

public class GraphicsView extends View
{
    public GraphicsView(Context context)
    {
        super(context);                 
    }
    @Override
    protected void onDraw(Canvas canvas)
    {
        Context context;
        context=getContext();

        View aview; 

        LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);    
        aview = inflater.inflate(R.layout.about, null);                 

        aview.draw(canvas);

        Path circle = new Path();
        Paint cPaint = new Paint(); 
        cPaint.setColor(Color.LTGRAY);
        circle.addCircle(150, 150, 100, Direction.CW);
        canvas.drawPath(circle, cPaint);
        cPaint.setColor(Color.RED);
        canvas.drawTextOnPath("Some stupid text", circle, 0, 20, cPaint);
    }
}

}

0

2 жауаптар

Көріністі сіңіргеннен кейін, оны өлшеп, оны дұрыс өлшеуге болатын етіп өлшемді беру керек. Aview.draw() шақырғанға дейін aview.measure() және aview.layout() шақырту керек.

ЕШҚАШАН көріністерін onDraw() ішінен ашыңыз. Бұл өте қымбат және сарқылмас. Сол сияқты, Draw() ішінде ешқашан бояулар мен жолдар жасамаңыз.

0
қосылды
Рамин Гай
қосылды автор alxlabs, көзі

Басқа форумнан басқа жауап бар:

FrameLayout:

 public class About extends Activity 
 { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.about);

       GraphicsView drawing = new GraphicsView(this);

       FrameLayout container = (FrameLayout) findViewById(R.id.container);
       container.addView(drawing);
    } 

    public class GraphicsView extends View 
    { 
       public GraphicsView(Context context) 
       { 
          super(context);                 
       } 
       @Override 
       protected void onDraw(Canvas canvas) 
       { 
          Path circle = new Path(); 
          Paint cPaint = new Paint(); 
          cPaint.setColor(Color.LTGRAY); 
          circle.addCircle(150, 150, 100, Direction.CW); 
          canvas.drawPath(circle, cPaint); 
          cPaint.setColor(Color.RED); 
          canvas.drawTextOnPath("Some stupid text", circle, 0, 20, cPaint); 
       } 
    } 
 }

Ал содан кейін xml келеді:

<?xml version="1.0" encoding="utf-8"?> 
 
    

0
қосылды