即時使用Xamarin和MvvmCross。LayoutParams更改僅在全屏中生效
我做了一個帶有recyclerView的FragmentDialog,該列表通過xml文件上的綁定來填充,所以我沒有適配器,我應該保持這種方式。
如果我沒有錯,那裏沒有內置的方式來使recyclerView只需要它的內容所需的大小,這應該不成問題,但在這種情況下,我需要列表從底部開始...
所以我這樣做(它是一個自定義的全屏對話):
MvxRecyclerView list = Dialog.FindViewById<MvxRecyclerView>(Resource.Id.recyclerview);
list.LayoutChange += List_LayoutChange;
在layoutChange
private void List_LayoutChange(object sender, View.LayoutChangeEventArgs e)
{
MvxRecyclerView list = Dialog.FindViewById<MvxRecyclerView>(Resource.Id.recyclerview);
int itemHeight = list.GetChildAt(0).Height;
if (itemHeight != 0)
{
ViewGroup.LayoutParams prms = list.LayoutParameters;
prms.Height = itemHeight * list.GetAdapter().ItemCount;
list.LayoutParameters = prms;
list.LayoutChange -= List_LayoutChange;
list.RequestLayout();
}
}
這是工作的罰款
然後,名單得到完全的高度和需要該列表看起來像從底部開始。
現在,客戶端告訴我他不喜歡全屏對話框,並希望狀態欄,我認爲這應該很容易,只是在對話框創建權刪除這條線?
dialog.Window.AddFlags(WindowManagerFlags.Fullscreen);
但看起來像它不是那麼容易,當對話框它不是全屏所的LayoutParams變化似乎沒有任何影響,它只是不無能爲力。
我的方法被調用,我得到正確的項目高度,它只是不改變recyclerview高度。
注意,在創建設置全屏和recyclerview PARAMS改變後清零標誌工程
所以看起來它只有在全屏模式下工作。
有人可以對此有所瞭解嗎?
在此先感謝。
伊夫結束這樣做沒有recyclerView,它很高興知道這個接下來的時間,但我的問題是關於我的解決方法不工作沒有全屏... – Nanoc