我想在我的應用程序中實現StackView
行爲,但我相信這個小部件只能從android 3.0開始提供。我是Android操作系統的中間開發人員,因此對定製視圖的知識有限。替代視圖,而不是Stackviews android版本降到android 3.0
請問一些人可以提供一些關於如何在android 2.2/2.3中實現Stackview
的提示嗎?
我想在我的應用程序中實現StackView
行爲,但我相信這個小部件只能從android 3.0開始提供。我是Android操作系統的中間開發人員,因此對定製視圖的知識有限。替代視圖,而不是Stackviews android版本降到android 3.0
請問一些人可以提供一些關於如何在android 2.2/2.3中實現Stackview
的提示嗎?
在API級別11(3.0)之前,SDK中沒有包含此確切功能的組件,因此您需要創建自己的自定義視圖以獲得所需的效果。
最簡單/最快捷的方法是創建一個擴展FrameLayout的自定義視圖,因爲一個FrameLayout的子元素自動堆疊在彼此之上,您的自定義視圖將繼承此行爲。 您還需要覆蓋兒童佈置的方式,以便根據孩子在堆疊中的位置調整孩子的x和y位置。
你必須使自己的方法去到下一個/上一個視圖 - 你必須通過重新排序子視圖來完成此操作(全部刪除它們,然後將它們添加回新的順序) 。
我所描述的解決方案不包括使用AdapterViews獲得的視圖回收,因此不適合大量堆疊物品。
或者,找到StackView源代碼並將其複製到您的項目中,但這可能還會涉及將大量其他Android類複製到您的項目中,因爲StackView無疑會訪問只有超類的私有成員可通過小部件包(無反射)訪問。
感謝Joesph ...但複製stackview源代碼只適用於android 3.0或以上版本? – 2011-04-04 21:59:22
不,它當然可以在早期版本上工作(除非它依賴於已更改的本地功能),但是您必須將StackView引用的所有類在3.0中但不在早期版本中的類複製到項目中。所以它會涉及很多複製類到您的項目中,並且大量編輯這些類以更改對您的版本的類的引用,而不是不存在的Android版本。 – 2011-04-04 22:13:57
基本上不要走直接的複製路線,它可能比查看StackView代碼更多的工作,理解它的作用,然後使自己的;因爲您需要複製和編輯相當多的文件才能使其實際工作。 – 2011-04-04 22:16:36
至少有幾個你問過的問題已經全部回答了。請標記給出的答案是否正確,或者添加註釋以解釋您在答案中遇到了哪些問題。 – 2011-04-04 21:09:10