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

标签 android android-layout gesture gesture-recognition

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

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

    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);

最佳答案

需要先添加view,才能读出高宽。此外,只有在第二次或第三次调用 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 之一。

关于android - 以编程方式设置 GestureOverlayView 宽度和高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23075660/

相关文章:

java - Android:初始化一些可以在项目中任何地方使用的字符串

android - FloatingActionButton 被 Fragment 中的 ListView 覆盖

android - 如何将布局元素高度定义为屏幕高度

android - 如何在android中的ScrollView上设置Gesture的onFling()事件?

android - 让手势落入 Android 上的不同 View

android - 避免使用 api 并始终使用实现?

android - 如何使用 fabric 获取用户时间线?

android - 优化 GestureOverlayView 中的手势预测

android - 在 Android 上同时将数据保存在内存和数据库中的最佳实践

android - LinearLayout 作为自定义按钮,OnClickListener 从未调用