我是Android开发的新手,我试图在一个片段内的随机位置放置一个视图(imageView
具体),但我遇到了很多麻烦。我花了很多时间试图找出如何做到这一点,但我仍然无法弄明白。
所以最初,我使用这种方法在常规活动中使用View的随机位置:
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);
但这不适用于Fragment
,因为我无法button.getWidth()
。所以我尝试使用ViewTreeObserver method,但我真的不明白发生了什么,我无法让它为我工作。
有人可以解释一下如何在一个片段内随机放置一个视图,而不会让视图超出片段的边界吗?
P.S。如果有人只是回答“你应该做更多的研究”,那么请理解我已经花费了大约10个小时试图解决这个问题,并且已经完全用尽了我如何做到这一点的任何想法。
答案 0 :(得分:0)
“我不能做button.getWidth()” - 视图的宽度和高度在充气之后才可用。如果您尝试在button.getWidth()
或onCreate
内拨打onCreateView
,则会返回0
,因为该视图尚未曝光。
相反,请尝试使用button.getWidth()
或onActivityCreated
中的onViewCreated
来调用{{1}},这些回调方法会让您知道所有视图的好处。