2014-01-27 30 views
0

我使用MvvmCross和對話框來創建iPhone和Android應用程序。在嘗試佈置類似於iPhone上的iMessage應用程序的屏幕時,我遇到了一些絆腳石。MvvmCross像iMessage的Monodroid.Dialog佈局

我基本上需要一個滾動視圖,佔用大部分屏幕,但有一個文本輸入和提交按鈕卡在屏幕的底部。如果列表增長到大於屏幕高度,列表應滾動,保留文本輸入和提交按鈕在屏幕底部的位置。

在一個非常快的,骯髒和蹩腳的嘗試我曾嘗試:

Root = new RootElement{ 
    new BindableSection<CustomStringElement>(null,() => new CustomStringElement(),(o, i) => { 
     //do something when clicked 
    }).Bind(bindings, element => element.ItemsSource, vm => vm.Comments), 
    new Section{ 
     new ButtonElement("Test") 
    } 
}; 

這顯然推動buttonelement下來當列表比屏幕高度。

我想知道的是如何最好地實現這一目標?我知道我可以使用佈局創建元素。但是我會爲此擺出什麼?我認爲如果它是一個直線MvxActivity,這將是更容易實現,但我不認爲我可以混合MvxActivityMvxDialogActivity - 我可能是錯的?

你會如何實現這種佈局?

回答

0

你可以混合對話框與非對話框 - 所以這可能是最好的方法。

此外,@csteeg去年提交了一些代碼,使得對話框可以在線性佈局(滾動視圖)和列表視圖(和片段)中使用 - 在您的自定義活動中使用它們應該相對簡單 - 它們的源代碼是在https://github.com/MvvmCross/MvvmCross/tree/v3.1/CrossUI/CrossUI.Droid/Dialog

+0

現在很明顯 - 有沒有辦法在Monotouch.Dialog中做到這一點?我有一個hacky的方式添加到主窗口底部的視圖:AppDelegate._window.AddSubview(comment);但這並不理想:) – iwayneo

+0

排序 - 必須在另一個控制器內託管Root,並且做了一些移動。雖然不容易! – iwayneo

+0

如果你解決了你的問題,回答你自己的問題並接受它。 – Cheesebaron