2011-01-20 21 views
3

我想寫一個日曆應用程序,我打算有一個網格(周視圖),這可能是一個TableLayout,並直接在最重要的,我會有在網格上絕對定位事件。Android:替代AbsoluteLayout(我真的需要絕對定位)

但不推薦使用AbsoluteLayout。我應該用什麼來代替?

事件可能會重疊,我認爲嘗試使用非絕對佈局來實現我想要的會非常愚蠢。

也許我應該使用RelativeLayout,並在每個子節點上留有餘量和餘量。似乎這樣做並不一定有效。這是最好的方式還是有其他選擇?

回答

1
  • CommonsWare建議寫我自己的佈局管理器,Christian指出它聽起來比現在容易。
  • Yahel建議SurfaceView/OpenGl並繪製任何我想要的。

我發現您可以通過添加你的孩子意見的RelativeLayout重新絕對定位並設置RelativeLayout.LayoutParams有效,但寬度,高度,marginTop和marginLeft只默認值。頂部和左側邊距將與頂部和左側相似,位於AbsoluteLayout。此外,支持負利差。

確保你考慮的屏幕密度,寬度和方向的變化和絕對定位的所有其他注意事項所用。如果你有讓你的內容中的問題溢出過去的右邊緣應用到AbsoluteLayout

屏幕上,嘗試補充您的正面左邊空白,同樣爲負右邊距。(original question)

1

但是AbsoluteLayout已被棄用。我應該用什麼來代替?

寫你自己的佈局管理器,實現你想要的規則。

+1

它聽起來比它更容易......但是這是他能做的最好的事情:P – Cristian 2011-01-20 16:13:27

0

我建議要麼會簡單的方法:

  1. 設置你的15(或30)分鐘的間隔日曆,這樣你就不需要絕對positionning。一個表格視圖充滿線性視圖,每個視圖代表15分鐘的時間間隔,並用事件填充它們

還是要去的辛苦,但很多更穩定/快速/定製方式:

  1. SurfaceView/OpenGL的繪製自己的,但是你想。

的問題,1號是你越添加在您的視圖元素層次結構越多,你的應用程序將採取的性能損失的事實。說一個傳統的月份,你每天有3次約會,你的層次結構將充滿一百個意見,這將是非常長的渲染和沉重的記憶方式。

編號2的問題:首先編碼困難得多。如果您必須編寫自己的佈局管理器,請不要使用surfaceview或openGL。

+0

任何需要將我的事件添加到「RelativeLayout」並使用`child.setPadding(left,top,0,0)將它們從左上角轉移下來? – 2011-01-20 17:03:35