2011-10-10 67 views
0

我正在研究遊戲的控件,並要求控件面板的一部分(下圖中的灰色)動態更改,顯示單個畫布(左側)或5個按鈕(對)。如圖所示,下排視圖之間的邊界應始終與上排按鈕之間的邊界位於相同的x位置。同時,所有十二個上面的按鈕應該縮放並均勻分佈。在相鄰佈局中均勻分隔視圖

Layout including canvas (left) and buttons (right)

我考慮過多種方法,但至今都沒有做什麼,我想:

  • 使用兩個LinearLayouts,一個控件的每一行:可靠地對齊邊框似乎是不可能的,並且替換部分佈局很難。
  • 使用TableLayout:再次,替換部分佈局很困難。
  • 使用的RelativeLayout:調整大小和獨立對準屏幕尺寸的按鍵似乎並不可能

任何建議的替代方法,或就如何使上述方法工作的呢?如果有某種方法可以對視圖的變化進行動畫處理,即從畫布左側的按鈕中滑動,那也不錯。謝謝!

回答

0

爲了解決這個問題:我已經通過編寫自定義佈局類來解決問題,該類可以放置並調整子視圖的大小,而不必考慮子節點的測量大小。實際上,這給了我具有佈局權重的線性佈局的行爲,但對於邊框佈局更具確定性。

ViewAnimator用於在畫布和按鈕之間切換。

0

有趣的是,我已經做了幾個星期前。我所做的就是利用View對象的這個屬性:"Visibility"。這意味着在一個固定的位置,我可以設置任何View顯示在,而不取決於任何類型的Layout,它可以是Visibility.GONE,Visibility.VISIBLEVisibility.INVISIBLE

在我的應用程序中,我使用RelativeLayout來設置相對位置TextView。 試試:)

+0

雖然這可以用來選擇顯示哪個視圖,但我的主要困難在於使視圖對齊正確,即頂部的均勻間隔按鈕和底部的視圖與頂部的按鈕對齊。 – zennehoy

+0

使它們具有相同的大小,「RelativeLayout」將使它們很好地對齊。 –

+0

無論我嘗試什麼,RelativeLayout都不會縮放按鈕以填充整個屏幕寬度(除非我指定設備的像素的確切數量,一旦屏幕分辨率發生變化就會中斷),也不能獲得頂部的一排按鈕與底部的行具有相同的高度。有關如何使縮放正確的任何建議? – zennehoy