以编程方式设置GestureOverlayView的宽度和高度?

时间:2014-04-15 05:55:09

标签: android android-layout gesture gesture-recognition

如何以编程方式设置GestureOverlayView's宽度和高度?

我尝试了以下代码。但是我在设置宽度和高度时遇到空指针异常。

    GestureOverlayView gestureOverlayView = new GestureOverlayView(this);
    View inflate = getLayoutInflater().inflate(R.layout.main, null);
    ImageView imageView = (ImageView) inflate.findViewById(R.id.imageView);
    gestureOverlayView.addView(inflate);
    gestureOverlayView.getLayoutParams().height = 50;
    gestureOverlayView.getLayoutParams().width = 50;
    setContentView(gestureOverlayView);

1 个答案:

答案 0 :(得分:1)

在读出高度和宽度之前,您需要先添加视图。此外,只有在onMeasure(...)尺寸为最终的第二次或第三次调用后,您才会遇到麻烦。

如果您想通过代码设置宽度和高度,请使用:

ViewGroup.LayoutParams lp = gestureOverlayView.getLayoutParams();
if(lp == null) {
    // not yet added to parent
    lp = new ViewGroup.LayoutParams(desiredWidth, desiredHeight);
} else {
    lp.width = desiredWidth;
    lp.height = desiredHeight;
}
gestureOverlayView.setLayoutParams(lp);

yourparent.addView(gestureOverlayView, lp);

请注意,您还需要选择正确的LayoutParams实施方案。在这里,我使用ViewGroup中的那个。