2016-07-30 315 views
1

我試圖設置自定義DialogFragment的大小。我正在嘗試這樣的事情:如何在Xamarin中設置DialogFragment大小?

class ChannelEdit : DialogFragment 
{ 
    public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) 
    { 
     base.OnCreateView(inflater, container, savedInstanceState); 
     var view = inflater.Inflate(Resource.Layout.ChannelEdit, container, false); 
     DisplayMetrics dm = new DisplayMetrics(); 
     this.Dialog.Window.WindowManager.DefaultDisplay.GetMetrics(dm); 
     int width = dm.WidthPixels; 
     int height = dm.HeightPixels; 
     this.Dialog.Window.SetLayout((int)width/2, (int)height/2); 
     return view; 
    } 
} 

但它沒有工作。我沒有收到任何錯誤。你能幫助我嗎?

+0

是,兩者都設置。 – Shagohad

+0

嘗試將** wrap_content **設置爲** android:layout_width **和** android:layout_height ** – Vaikesh

回答

0

爲根元素設置佈局參數:

int width = this.Resources.DisplayMetrics.WidthPixels; 
int height = this.Resources.DisplayMetrics.HeightPixels 
rootLayout.setLayoutParams (new LinearLayout.LayoutParams (width, height)); 
+0

對於根元素仍然存在問題,但我在根元素中創建了第二個佈局,然後正常工作: )。謝謝! – Shagohad

+0

解決方案應該用於xamarin,並且您已經提供了java代碼 –

+0

什麼是rootLayout?此代碼也進入OnResume()? – dev1998

-1
public override void OnActivityCreated(Bundle savedInstanceState) 
    { 
     this.Dialog.Window.RequestFeature(WindowFeatures.NoTitle); 
     this.Dialog.Window.SetGravity(GravityFlags.Center); 
     base.OnActivityCreated(savedInstanceState); 
     int Width = (Resources.DisplayMetrics.WidthPixels) - 150; 
     int Height = (Resources.DisplayMetrics.HeightPixels) - 70; 
     this.Dialog.Window.Attributes.Width = Width; 
     this.Dialog.Window.Attributes.Height = Height; 
    } 
+0

不僅可以添加coe。添加一個解釋你做了什麼以及爲什麼 – Jens