Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在片段中随机放置视图_Java_Android - Fatal编程技术网

Java 在片段中随机放置视图

Java 在片段中随机放置视图,java,android,Java,Android,我是android开发的新手,我正试图将一个视图(imageView具体地说)放在片段内部的一个随机位置,但我遇到了很多麻烦。我花了大量的时间试图找出如何做到这一点,但我仍然不明白 因此,最初,我使用此方法在常规活动中使用视图对象的随机位置: RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) button.getLayoutParams(); DisplayMetrics metrics = ne

我是android开发的新手,我正试图将一个视图(
imageView
具体地说)放在片段内部的一个随机位置,但我遇到了很多麻烦。我花了大量的时间试图找出如何做到这一点,但我仍然不明白

因此,最初,我使用此方法在常规活动中使用视图对象的随机位置:

    RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) button.getLayoutParams();
    DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);

    params.leftMargin = new Random().nextInt(metrics.widthPixels - button.getWidth());
    params.topMargin = new Random().nextInt(metrics.heightPixels - 2 * button.getHeight());
    button.setLayoutParams(params); 
但是这在
片段中不起作用,因为我不能执行
按钮.getWidth()
。然后我试着使用了,但我真的不明白发生了什么,我无法让它为我工作

有人能解释一下我如何在片段内部随机放置一个视图,而不让视图超出片段的边界吗

另外,如果有人只是回答“你应该做更多的研究”,请理解,我已经花了大约10个小时试图弄明白这一点,并且已经完全用尽了我如何能做到这一点的所有想法

“我不能执行按钮。getWidth()”-视图的宽度和高度在充气后才可用。如果尝试在
onCreate
onCreateView
中调用
按钮.getWidth()
,它将返回
0
,因为视图尚未膨胀


相反,请尝试在ActivityCreated
或ViewCreated中调用
按钮.getWidth()
,这些回调方法可以让您知道何时所有视图都可以正常运行。

我以前尝试过,但后来无法调用getWindowManager()。有什么建议吗?此外,此方法是查找整个屏幕的高度和宽度还是仅查找片段?调用
button.getwidth()
查找按钮的宽度。如果可能,请尝试直接处理您关心的视图的大小。如果你一定要找到整个屏幕的大小:对不起,我还是有点困惑。我得到了按钮的尺寸,太棒了。但是现在我如何得到碎片的大小呢?因为metrics方法获取屏幕的大小,所以只需获取顶层视图(即占据整个片段的视图)的大小即可。