2016-12-23 5 views
0

Ich versuche, wurde die Breite eines Alertdialog in Pixel zu erhalten und setzen auch dynamisch seine Breite.Erhalten Breite von Alertdialog in Pixeln oder 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); 

Der obige Code funktionierte nicht für mich. Auch habe ich andere Codes wie here gefolgt, aber keiner half.

Wie bekomme ich und setze Breite von AlertDialog in Pixel oder dp?

+1

aus verknüpfter Lösung, welchen Code haben Sie ausprobiert? –

Antwort

1

Sie können nur widht und einer Höhe von Ansichten, Also, wenn seine individuelle Dialog folgen seine Stammansicht nehmen Sie bitte das Beispiel

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

Hier relativ Layout der übergeordneten Ansicht und Komponente sind in ihm.

Nun ist diese zu bekommen Höhe und Breite tun: -

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

Um widht und Höhe tun dies

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(); 

ODER

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

Ersetzen Code unten ein:

dialog.getWindow().setLayout(getResources().getDimensionPixelSize(R.dimen.layout_height_400dp), WindowManager.LayoutParams.MATCH_PARENT); 
Verwandte Themen