2015-04-02 111 views
4

我对XML如何在线性布局内设置随机TextView的位置?

<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> 

一个的LinearLayout我通过下面的代码添加在其内部动态100个textviews:

 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加入和垂直显示。这不是我的期望。我希望这些textviews显示在布局内部的随机位置,如下图所示: enter image description here

如何做到这一点?谢谢!

回答

3

LinearLayout是线性布点其子(顾名思义)。

由于没有RandomLayout,所以可以使用RelativeLayout以及随机左上布局页边距或AbsoluteLayout并设置随机x和y。

编辑:避免重叠的文本当然可以铅

随机位置重叠,这将是由你来调整位置或忽略太相似了以前的位置。或者您可能实际比较了要添加到容器中所有其他视图的视图的边界框(左,顶部,宽度,高度),并且如果有任何重叠,请为它找到另一个位置。

+0

我使用AbsoluteLayout,textviews可以随机显示。如何避免textviews重叠在一起? – Hnib 2015-04-02 07:20:00

2

您可以使用tv.setX(位置)和tv.setY(位置),用于显示视图上的特定位置

+0

感谢您的回答,如何避免这些textview重叠在一起? – Hnib 2015-04-02 07:14:07