2011-02-02 3 views
3

У меня есть приложение, которое отображает некоторые данные графически. Он создает два вида для рисования графики и добавляет их в мой макет. Каждый вид показывает данные иначе путь, но каждый View реализует onSizeChanged() тот же:second onSizeChanged получает ноль

 protected void onSizeChanged(int curw, int curh, int oldw, int oldh) { 
     if (bitmap2 != null) { 
      bitmap2.recycle(); 
     } 
     canvas2= new Canvas(); 
     bitmap2 = Bitmap.createBitmap(curw, curh, Bitmap.Config.ARGB_8888); 
     canvas2.setBitmap(bitmap2); 
    } 

Взгляды вызываются таким образом:

 LinearLayout myLayout = (LinearLayout)findViewById(R.id.revlay); 

     GraphView1 graphView1 = new GraphView1(this, theEventArrayList); 
     myLayout.addView(graphView1); 

     GraphView2 graphView2 = new GraphView2(this, theEventArrayList); 
     myLayout.addView(graphView2); 

всегда первыйonSizeChanged() что получивший название получает высоту 652 и ширину 480; второй получает высоту 0, что вызывает createBitmap() сбой. Если бы я изменил порядок вышеупомянутого вызова, то GraphView1 потерпит неудачу таким образом. Я хотел бы, чтобы у каждого растрового изображения было около половины области.

Заранее благодарим за разъяснения, что происходит!

ответ

0

сложно ответить на ваш вопрос, не зная подробных сведений о вашем графическом виде и параметрах макета LinearLayout. Но предполагается, что ваш LinearLayout имеет горизонтальную ориентацию, попробуйте следующее:

GraphView1 graphView1 = new GraphView1(this, theEventArrayList); 
GraphView2 graphView2 = new GraphView2(this, theEventArrayList); 
myLayout.addView(graphView2, new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 0, 1)); 
myLayout.addView(graphView1, new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, 0, 1)); 

это сказать LinearLayout устроить свою точку зрения таким образом, чтобы они в равной степени разделить пространство по горизонтали между собой.

Смежные вопросы