如何在 Xamarin 中设置 DialogFragment 大小?
How to set DialogFragment size in 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;
}
}
但是它不起作用。我没有收到任何错误。你能帮我解决这个问题吗?
设置根元素的布局参数:
int width = this.Resources.DisplayMetrics.WidthPixels;
int height = this.Resources.DisplayMetrics.HeightPixels
rootLayout.setLayoutParams (new LinearLayout.LayoutParams (width, height));
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;
}
您必须在 OnResume 中设置值(这不直观,但效果很好)。我也有尊重密度的代码,让你严格控制大小,不管密度如何。
public override void OnResume()
{
base.OnResume();
var window = Dialog.Window;
var requestedWidth = (int)(350 * (this.Resources.DisplayMetrics.Density));
var requestedHeight = (int)(175 * (this.Resources.DisplayMetrics.Density));
window.SetLayout(requestedWidth, requestedHeight);
window.SetGravity(GravityFlags.Center);
}
我正在尝试设置自定义 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;
}
}
但是它不起作用。我没有收到任何错误。你能帮我解决这个问题吗?
设置根元素的布局参数:
int width = this.Resources.DisplayMetrics.WidthPixels;
int height = this.Resources.DisplayMetrics.HeightPixels
rootLayout.setLayoutParams (new LinearLayout.LayoutParams (width, height));
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;
}
您必须在 OnResume 中设置值(这不直观,但效果很好)。我也有尊重密度的代码,让你严格控制大小,不管密度如何。
public override void OnResume()
{
base.OnResume();
var window = Dialog.Window;
var requestedWidth = (int)(350 * (this.Resources.DisplayMetrics.Density));
var requestedHeight = (int)(175 * (this.Resources.DisplayMetrics.Density));
window.SetLayout(requestedWidth, requestedHeight);
window.SetGravity(GravityFlags.Center);
}