如何在线性布局中设置随机TextView的位置?

时间:2015-04-02 04:56:35

标签: java android

我在xml上有一个linearlayout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/rootlayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

</LinearLayout>

我通过以下代码在其中添加动态100个文本视图:

        llayout = (LinearLayout) findViewById(R.id.rootlayout);

        for (int i = 0; i < 100; i++) {
            TextView tv = new TextView(this);
            tv.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT, 
                                                LayoutParams.WRAP_CONTENT));
            int randomInt = new Random().nextInt(100) +1 ;
            tv.setText(""+randomInt);       
            llayout.addView(tv);
        }

结果是添加了100个文本视图并垂直显示。这不是我的期望。我希望这些textviews显示在布局中的随机位置,如下图所示: enter image description here

怎么做?谢谢!

2 个答案:

答案 0 :(得分:3)

LinearLayout用于线性布局其子项(顾名思义)。

由于没有RandomLayout,您可以使用带有随机左侧和顶部布局边距的RelativeLayout,或AbsoluteLayout并设置随机x和y。

修改:避免重叠文字

随机位置当然会导致重叠,您可以自行调整位置或忽略与之前位置太相似的位置。或者,您实际上可能会比较要添加到容器中所有其他视图的视图的边界框(左侧,顶部,宽度,高度),如果有任何重叠,请为其找到另一个位置。

答案 1 :(得分:2)

你可以使用tv.setX(位置)和tv.setY(位置)来显示特定位置的视图