如何以编程方式设置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);

最佳答案

您需要先添加视图,然后才能读出高度和宽度。同样,只有在第二次或第三次调用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之一。

10-08 17:28