2016-12-23 45 views
0

ピクセル単位でAlertDialogの幅を取得しようとしていて、その幅を動的に設定しようとしていました。AlertDialogの幅をピクセルまたはdpで取得する

getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); 
int width = displaymetrics.widthPixels; 

WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); 
lp.copyFrom(dialog.getWindow().getAttributes()); 
lp.width = width; 
lp.height = WindowManager.LayoutParams.WRAP_CONTENT; 
lp.gravity = Gravity.CENTER; 

dialog.getWindow().setAttributes(lp); 

上記のコードは私にとっては機能しませんでした。また、私もhereのような他のコードに従っていましたが、役に立たなかった。

AlertDialogをピクセルまたはdpで取得して設定するにはどうすればよいですか?そのカスタムダイアログは、そのルートビューを取る場合

+1

あなたが試したコードですか? –

答えて

1

あなただけwidht取得し、ビューの高さをすることができ、 だから親切に

ここ
RelativeLayout rl = (RelativeLayout) dialog.findViewById(R.id.root_relative_layout); 

相対レイアウトがそれである親ビューとコンポーネントである例に従ってください。今

は、高さと幅は、これを実行するには: -

int width = rl.getWidth(); 
int height = rl.getHeight(); 

widht設定するには、高さがこの

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setView(layout); 
    builder.setTitle("Title"); 
    alertDialog = builder.create(); 
    alertDialog.getWindow().setLayout(600, 400); //Controlling width and height. 
    alertDialog.show(); 

OR

WindowManager.LayoutParams lp = new WindowManager.LayoutParams(); 

lp.copyFrom(alertDialog.getWindow().getAttributes()); 
lp.width = 150; 
lp.height = 500; 
lp.x=-170; 
lp.y=100; 
alertDialog.getWindow().setAttributes(lp); 
0

はコードの下に置き換え行います

dialog.getWindow().setLayout(getResources().getDimensionPixelSize(R.dimen.layout_height_400dp), WindowManager.LayoutParams.MATCH_PARENT); 
関連する問題