2016-07-30 317 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