![](/img/trans.png)
[英]how do i accurately calculate my layout (button) height relative to screen size?
[英]Fragments: How do I compose the final, screen size dependent, layout of my application?
編輯:
問題最終是關於是否存在事實上的標准或Google關於如何實施以下問題的建議。
起源:
最近,我開始仔細研究Android中的Fragments
概念 。 我確實對此有想法(或者至少我認為是這樣),並且我也看到了對此的需求。 我很容易理解片段實現背后的技術。 但是,我似乎在理解上有問題,是如何組成應用程序的最終布局,以便它可以在大型平板電腦和小型智能手機上自動運行?
我有我的列表片段(例如MS Outlook-inbox-list)和詳細視圖片段(例如MS Outlook-email-preview)。 在平板電腦上,我自然希望在單個活動中顯示這兩個片段,但是在智能手機上,我希望在兩個不同的活動中顯示它們,而在單個活動中並不一定要同時容納兩個片段。
我該如何解決呢?
我是否必須在應用程序中實現三個活動(多合一平板電腦活動和兩個單獨的智能手機特定活動)? 但是,應用程序如何才能決定使用哪種實現(1或1 + 1)呢?
通常,我的活動扮演“控制器”的角色(根據MVC范例),但是,就上述問題而言,我將擁有三個控制器。 哪種構造將扮演根控制器的角色? 我是否應該編寫一個“主活動”(不帶UI),以編程方式嘗試確定其駐留在哪個設備上,然后相應地調用合適的片段活動? 但是之后; 如何以一種定義明確的方式找出我的應用程序在哪種類型的設備(平板電腦/手機)上運行?
我想我可以發布一些代碼,但是我認為這不會進一步澄清我的問題,因為它更多是體系結構選擇問題,而不是特定於實現的問題。
干杯,
數據庫
我是否必須在應用程序中實現三個活動(多合一平板電腦活動和兩個單獨的智能手機特定活動)?
不,可能只有兩個。 一個負責加載ListFragment
,如果有空間,則負責加載細節片段。 另一個僅加載詳細信息片段-如果用戶點擊列表條目並且第一個活動未顯示詳細信息片段,則第一個活動將由第一個活動啟動。
通常,我的活動扮演“控制器”的角色(根據MVC范例),但是,就上述問題而言,我將擁有三個控制器。
恕我直言,帶有片段的片段是您的控制者。 活動是業務流程層,用於確定哪些片段可見並處理跨片段事件。
但是之后; 如何以一種定義明確的方式找出我的應用程序在哪種類型的設備(平板電腦/手機)上運行?
在許多情況下,最簡單的解決方案是通過布局XML資源來驅動它。
例如,在我的上述建議中,第一個活動可能具有main.xml
兩個不同版本。 一個( res/layout/main.xml
)僅加載ListFragment
。 另一個(例如, res/layout-large-land/main.xml
)加載ListFragment
和詳細信息片段,或加載ListFragment
和動態詳細信息片段的FrameLayout
容器(您可以通過FragmentTransaction
定義)。 活動本身通過確定第二個片段(或其FrameLayout
“插槽”)是否存在於膨脹的main.xml
來確定是管理兩個片段還是一個片段。 這樣,如果您將來更改布局規則(例如res/layout-sw600dp-land/main.xml
),則無需更改Java代碼。
也沒有什么可以阻止您使用Configuration
和DisplayMetrics
嘗試在Java代碼中進行決策。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.