2015-10-29 190 views
0

我正在開發一個需要動態創建多個按鈕的應用程序(onCreate MainActivity類)。每個按鈕的尺寸均爲100x100dp。Android:避免重疊動態視圖

下面的代碼:

for (int i = 0; i < count; i++) { 
     buttons[i] = new Button(this); 
     RelativeLayout ll = (RelativeLayout)findViewById(R.id.maincontainer); 
     RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
     buttons[i].setY(i * 150); // should be random 
     buttons[i].setX(i * 120); // should be random 
     String temp = Character.toString(input.charAt(i)); 
     buttons[i].setText(temp); 
     buttons[i].setOnClickListener(this); 
     buttons[i].setId(i); 
     test1.setText(Integer.toString(buttons[i].getId())); 

     ll.addView(buttons[i],lp); 
    } 

這些按鈕的位置應該是可通過生成用於x和y座標的隨機值可以容易地實現該佈局內完全隨機的。但我需要按鈕不要與其他按鈕重疊。同樣由於尺寸爲100x100dp,以前生成的按鈕有時會與新的按鈕部分重疊。

請幫我解決問題。謝謝!

回答

0

你可以把你的按鈕流佈局中,檢查出的鏈接https://github.com/blazsolar/FlowLayout

+0

線性佈局的層疊聽起來很吸引人。剛剛檢出鏈接[鏈接](http://stackoverflow.com/questions/6996837/android-multi-line-linear-layout/13505029#13505029)。如果編碼器的方法不能解決問題,請嘗試一下。謝謝! – Saurav

0

實際上,你可以算出這個編程。保持您生成的視圖的座標存儲在列表中。然後簡單地比較座標以查看新視圖是否相交。您可以使用下面的可視化:

http://silentmatt.com/rectangle-intersection/

我希望你嘗試寫代碼比從某處複製它。 :)

一個SO鏈接來幫助你:Determine if two rectangles overlap each other?

+0

謝謝@codester。這正是我認爲的最後一招。流動佈局看起來很有趣,但現在隨着你的接近而去。乾杯! – Saurav