0

我有一个Class被调用LineGraphView的,它是View. 我希望能够将一些数据传递给这个视图,以便它可以在其onDraw()方法中相应地绘制。

分析片段(引用视图和调用方法的位置)

LineGraphView altitudeGraph;
LineGraphView speedGraph;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup group, Bundle saved)
{
    super.onCreateView(inflater, group, saved);

    View view = inflater.inflate(R.layout.analysisfrag, group, false);
    this.altitudeGraph = (LineGraphView) view.findViewById(R.id.linegraph_Altitude);
    this.speedGraph = (LineGraphView) view.findViewById(R.id.linegraph_Speed);

    return view;
}

我的问题是,如果我希望能够使用getWidth()and访问该视图的宽度和高度属性getHeight(),我什么时候能够这样做,因为到目前为止返回的都是0.

我是否需要创建一个侦听器,让LineGraphView's父母知道它已准备好被访问?

提前致谢。

4

2 回答 2

1

如果您已经在创建自己的自定义视图,我只需添加一些带有 getter/setter 的私有变量,以获取您需要传递的信息。从那里,只需在 onDraw() 方法中处理绘图——从那里,您可以获得视图的宽度和高度(或者只是画布的宽度和高度,它们可能是相同的值)。

于 2012-07-03T14:42:38.607 回答
0

答案在这里:https ://stackoverflow.com/a/3594216/969325 基本上你调用 getWidth/height 太早了(在 onCreate 期间)。我相信您可以在 onCreate 之后使用处理程序来获取它。你也可以试试这个:https ://stackoverflow.com/a/10118459/969325(使用onWindowFocusChanged)。

于 2012-07-03T14:40:26.050 回答