Wenn wir einen AlertDialog in Android anzeigen, wird er in der Mitte des Bildschirms angezeigt. Gibt es eine Möglichkeit, die Position zu ändern?
Wenn wir einen AlertDialog in Android anzeigen, wird er in der Mitte des Bildschirms angezeigt. Gibt es eine Möglichkeit, die Position zu ändern?
Antworten:
Nach der Suche in verschiedenen Beiträgen habe ich die Lösung gefunden.
Der Code ist unten angegeben:
private CharSequence[] items = {"Set as Ringtone", "Set as Alarm"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setItems(items, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
if(item == 0) {
} else if(item == 1) {
} else if(item == 2) {
}
}
});
AlertDialog dialog = builder.create();
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
WindowManager.LayoutParams wmlp = dialog.getWindow().getAttributes();
wmlp.gravity = Gravity.TOP | Gravity.LEFT;
wmlp.x = 100; //x position
wmlp.y = 100; //y position
dialog.show();
Hier ist der Wert der x-Position Pixel von links nach rechts. Für y ist der Positionswert von unten nach oben.
wmlp.x = 100; //x position wmlp.y = 100;
Sie einzustellen , nur die Schwerkraft wmlp.gravity = Gravity.TOP | Gravity.LEFT;
ist genug
Wenn Sie beispielsweise den Fortschrittsdialog etwas weiter nach unten verschieben und nicht die exakte Pixelposition festlegen möchten, ist dies ausreichend:
progressDialog.getWindow().getAttributes().verticalMargin = 0.2F;
Diese Antworten verschieben die Position des AlertDialogs. Die Position des angezeigten Dialogfelds enthält jedoch auch das Auffüllen des Dialogfelds.
Wenn Sie diese Auffüllung entfernen möchten (z. B. um Ihren Dialog bündig am unteren Bildschirmrand zu platzieren), müssen Sie auch den Standard-AlertDialog-Stil in Ihrer styles.xml überschreiben, um den windowBackground wie folgt auf null zu setzen ::
<resources>
<!-- Example app theme - mine uses the below -->
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:alertDialogTheme">@style/MyDialogTheme</item>
</style>
<style name="MyDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
<!-- Full width -->
<item name="android:layout_width">fill_parent</item>
<!-- Null window background kills surrounding padding -->
<item name="android:windowBackground">@null</item>
<item name="android:windowNoTitle">true</item>
</style>
</resources>
Sowie das Einstellen der Window.LayoutParameters wie in der akzeptierten Antwort beschrieben.
Ein besonderer Gruß an @David Caunt, dessen Antwort unter: Rand entfernen, Auffüllen aus Dialog vervollständigte dieses Bild.