Android에서 AlertDialog를 표시하면 화면 중앙에 표시됩니다. 위치를 변경할 방법이 있습니까?
답변
다양한 게시물을 검색 한 후 해결책을 찾았습니다.
코드는 아래에 게시되어 있습니다.
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();
여기서 x 위치의 값은 왼쪽에서 오른쪽으로 픽셀입니다. y 위치 값은 아래에서 위로입니다.
답변
예를 들어 진행률 대화 상자를 조금 더 아래로 이동하고 exakt 픽셀 위치를 설정하지 않으려면 다음으로 충분합니다.
progressDialog.getWindow().getAttributes().verticalMargin = 0.2F;
답변
설정을 정보 효과로 만들기 위해 다음 코드를 추가했습니다.
dialog.getWindow().setAttributes(wmlp);
gypsicoder의 답변에서 wmlp 값을 변경하거나 wmlp 설정이 내 테스트에서 적용되지 않습니다.
답변
이 답변은 AlertDialog의 위치를 이동하지만 표시된 대화 상자의 위치에는 대화 상자 주변의 패딩도 포함됩니다.
이 패딩을 제거하려면 (예를 들어, 대화 상자를 화면 하단에 플러시하기 위해) styles.xml에서 기본 AlertDialog 스타일을 재정 의하여 windowBackground를 null로 설정해야합니다. :
<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>
수락 된 답변에 설명 된대로 Window.LayoutParameters를 설정합니다.
특별 소리 아웃 그의 대답에서 @ 데이비드 Caunt에 : 제거 테두리, 패딩 대화 상자에서 이 사진을 완료했다.