Yanıtlar:
Çeşitli yazılarda aradıktan sonra çözümü buldum.
Kod aşağıda yayınlanmıştır:
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();
Burada x konumunun değeri soldan sağa pikseldir. Y konumu için değer, aşağıdan yukarıya doğrudur.
wmlp.x = 100; //x position wmlp.y = 100;
gerek yok sadece yerçekimini ayarlamak wmlp.gravity = Gravity.TOP | Gravity.LEFT;
yeterli
Örneğin, ilerleme diyalogunu biraz daha aşağı taşımak istiyorsanız ve exakt piksel konumunu ayarlamak istemiyorsanız, bu yeterlidir:
progressDialog.getWindow().getAttributes().verticalMargin = 0.2F;
Bu yanıtlar, AlertDialog'un konumunu değiştirecektir, ancak görüntülenen iletişim kutusunun konumu, iletişim kutusunun etrafındaki dolguyu da içerecektir.
Bu dolgudan kurtulmak istiyorsanız (örneğin, diyaloğunuzu ekranın alt kısmına yaslamak için), windowBackground'u null olarak ayarlamak için styles.xml dosyanızdaki varsayılan AlertDialog stilini de geçersiz kılmanız gerekecektir. :
<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>
Kabul edilen yanıtta açıklandığı gibi Window.LayoutParameters'ı ayarlamanın yanı sıra.
@David Caunt'a özel seslendirme, cevabı: kenarlığı kaldır, Dialog'dan doldurma bu resmi tamamladı.