【问题标题】:second onSizeChanged gets height of zero第二个 onSizeChanged 高度为零
【发布时间】:2012-03-25 05:25:07
【问题描述】:

我有一个以图形方式显示一些数据的应用程序。它创建两个视图来绘制图形并将它们添加到我的布局中。每个视图以不同的方式显示数据,但每个视图实现 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; second 的高度为 0,这会导致 createBitmap() 失败。如果我颠倒了上述调用的顺序,那么 graphView1 就会以这种方式失败。我希望每个位图都有大约一半的区域。

提前感谢您解释发生了什么!

【问题讨论】:

    标签: android graphics


    【解决方案1】:

    如果不了解有关您的图形视图和线性布局的布局参数的进一步实现细节,很难回答您的问题。 但假设您的 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 排列您的视图,以便它们平均划分它们之间的水平空间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-19
      • 1970-01-01
      • 1970-01-01
      • 2014-05-23
      • 2011-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多