随机放置片段中的视图

时间:2015-04-01 03:21:50

标签: java android

我是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个小时试图解决这个问题,并且已经完全用尽了我如何做到这一点的任何想法。

1 个答案:

答案 0 :(得分:0)

“我不能做button.getWidth()” - 视图的宽度和高度在充气之后才可用。如果您尝试在button.getWidth()onCreate内拨打onCreateView,则会返回0,因为该视图尚未曝光。

相反,请尝试使用button.getWidth()onActivityCreated中的onViewCreated来调用{{1}},这些回调方法会让您知道所有视图的好处。