Java 在片段中随机放置视图
我是android开发的新手,我正试图将一个视图(Java 在片段中随机放置视图,java,android,Java,Android,我是android开发的新手,我正试图将一个视图(imageView具体地说)放在片段内部的一个随机位置,但我遇到了很多麻烦。我花了大量的时间试图找出如何做到这一点,但我仍然不明白 因此,最初,我使用此方法在常规活动中使用视图对象的随机位置: RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) button.getLayoutParams(); DisplayMetrics metrics = ne
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方法获取屏幕的大小,所以只需获取顶层视图(即占据整个片段的视图)的大小即可。