Saat kami menampilkan AlertDialog di android, ini ditampilkan di tengah layar. Apakah ada cara untuk mengubah posisi?
Saat kami menampilkan AlertDialog di android, ini ditampilkan di tengah layar. Apakah ada cara untuk mengubah posisi?
Jawaban:
Setelah mencari di berbagai postingan saya menemukan solusinya.
Kode diposting di bawah ini:
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();
Di sini nilai posisi x adalah piksel dari kiri ke kanan. Untuk nilai posisi y dari bawah ke atas.
wmlp.x = 100; //x position wmlp.y = 100;
Anda, cukup atur gravitasi wmlp.gravity = Gravity.TOP | Gravity.LEFT;
sudah cukup
Jika Anda misalnya ingin memindahkan log kemajuan sedikit lebih jauh ke bawah, dan tidak mengatur posisi piksel yang tepat, maka ini sudah cukup:
progressDialog.getWindow().getAttributes().verticalMargin = 0.2F;
Jawaban ini akan memindahkan posisi AlertDialog, namun posisi dialog yang ditampilkan juga akan menyertakan padding di sekitar dialog.
Jika Anda ingin menyingkirkan padding ini (misalnya, untuk menempatkan dialog Anda rata di bagian bawah layar), Anda juga perlu mengganti gaya AlertDialog default di styles.xml Anda untuk menyetel windowBackground ke null, seperti itu :
<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>
Serta mengatur Window.LayoutParameters seperti yang dijelaskan dalam jawaban yang diterima.
Teriakan khusus untuk @David Caunt yang jawabannya di: hapus batas, padding dari Dialog melengkapi gambar ini.