2015-04-02 71 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