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

** 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

に** wrap_content **を設定しようとしましたが、まだ問題がありましたが、ルート要素に2番目のレイアウトが作成されていて、 )。ありがとう! – 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

関連する問題