我目前正在研究一個需要我使用XML文檔在Android設備上呈現表單的項目。表單必須在運行時獲取並顯示。我想知道是否有一種方法來標記表單XML,使用XSLT將其轉換爲Android佈局XML,然後讓設備呈現它。在Android中構建/使用運行時生成的佈局XML
回答
Android僅包含一種內置方式,用於「膨脹」作爲佈局資源存儲在APK文件中的佈局XML。如果您想從其他來源「膨脹」相似(或不同)的XML,則必須自己實施,或許可以通過克隆LayoutInflater
類中的某些邏輯來實現。
LayoutInflater.inflate方法會將XmlPullParser作爲參數,因此您只需將您的動態創建的XML加載到PullParser中並將其傳遞給inflater即可。
但是,如果您實際上閱讀了該方法的文檔,它說「目前在運行時通過普通XML文件使用LayoutInflater和XmlPullParser」。 – 2009-12-21 20:23:48
好吧,我可以看到這是一個非常整潔的功能。 – CaseyB 2009-12-21 20:36:42
不幸的是,你不能僅僅克隆LayoutInflater或者使用其他這樣的技巧來做到這一點 - 佈局通脹完全依賴於採用AttributeSet參數的視圖構造函數,它完全依賴於Context.obtainStyledAttributes方法本身完全依賴於預處理的二進制XML文件能夠執行合理有效的屬性解析。
您可以探索的另一種方法是在您的服務器上使用aapt工具(或更可能是其被黑客入侵的版本),將您生成的佈局編譯爲適當的數據。不幸的是,我們目前沒有辦法從原始二進制blob構建XmlPullParser(它必須從AssetManager中獲得此blob),因此使用此方法在客戶端和服務器上都要做相當多的工作。我懷疑可以拿出一些非常整齊的東西,但這將會有很多工作。
考慮到這是需要在接下來的一週半原型的東西,我認爲這不是我應該調查,直到以後的日子。你會同意嗎? 我已經完成了從桌面和web平臺上運行之前的XML的UI構建。對於Windows Mobile應用程序,我們也有一個實現。當我有更多的時間或者出現性能問題時,我可能只需模擬這些方法並在稍後調查aapt。 – illvm 2009-12-21 22:18:55
是的,這不是一個一週的項目。 :) 最簡單的方法是製作一個簡單的XML結構,該結構可以定義您的佈局所需的內容,而不會嘗試允許Android佈局可以執行的任何可能的事情。解析並將其轉換爲視圖佈局的構建應該相當簡單;您可以根據需要將新設施添加到XML格式。 – hackbod 2009-12-21 22:25:32
- 1. 如何使用XML在android中生成佈局?
- 2. Android運行時佈局
- 3. 在xml中構建這個佈局?
- 4. 創建XML的Android佈局
- 5. 在android xml中使用佈局
- 6. Visual Studio 2012開關佈局在構建和運行時
- 7. Android - 在運行時向主佈局添加布局
- 8. 知道運行時使用的佈局
- 9. 構建反應原生運行Android的
- 10. 成功的Gradle項目構建在運行時產生NoClassDefFoundError
- 11. 管理佈局運行時android
- 12. Android。幫助運行時佈局設計。
- 13. Android應用程序在運行時佈局中處理控件
- 14. Android - 在其他xml佈局中添加一個xml佈局
- 15. Android APK在運行時不會生成
- 16. 使用不同Android API的XML佈局
- 17. 使用按鈕的Android XML佈局
- 18. 構建Android應用在JRE中運行
- 19. 如何使用基於XML的GUI佈局生成python GUI?
- 20. 使用在運行時生成的元素創建AlertDialog
- 21. 使用在運行時生成的列創建GridView
- 22. 生成spring xml文件運行時
- 23. 在運行時使用C#中的xsd從數據集中生成xml
- 24. DroidDraw生成的android佈局錯誤?
- 25. Android生成的佈局,有可能嗎?
- 26. Android和XML佈局
- 27. Android UI XML佈局
- 28. 什麼佈局,使用產生的Android
- 29. Android:合併xml並以編程方式生成佈局
- 30. Android Dev:無法從XML模板動態生成多個佈局
只是受到警告。 Android在運行時會做很多工作來優化對這些文件的讀取和解析。所以,如果你推出自己的產品,請準備好讓它慢一點。 – haseman 2009-12-21 20:30:53