Android: отображение пользовательского диалога в центре контейнера
Как отобразить пользовательский диалог как центр контейнера?
Dialog customdialog = new Dialog(this,android.R.style.Theme_Translucent_NoTitleBar);
Window window = customdialog.getWindow();
window.setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
window.setGravity(Gravity.CENTER);
R.style.Theme_Translucent_NoTitleBar
- используется для удаления границы для cutomdialog. Как только я использую эту строку, диалог появится в верхнем углу планшета?
Может ли кто-нибудь помочь мне решить эту проблему?
Ответы
Ответ 1
Измените fill_parent на wrap_content.I надеюсь, что это будет проблема, когда диалог появится в углу действия. Он занимает пространство всего макета. Так что это может помочь вам получить то, что вам действительно нужно.
Window window = customdialog.getWindow();
window.setLayout(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
window.setGravity(Gravity.CENTER);
Ответ 2
Я добавил это в пользовательский стиль диалога, и он работал нормально.
<item name="android:layout_gravity">center</item>
Ширину и высоту моего диалога устанавливают на wrap_content. Родитель стиля
Родитель = "@андроид: стиль /Theme.Light"
Ответ 3
Я поеду за этой частью кода:
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
Window window = dialog.getWindow();
lp.copyFrom(window.getAttributes());
//This makes the dialog take up the full width
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.MATCH_PARENT;
window.setAttributes(lp);
В диалоговом окне отображается объект диалога. Внутри макета диалогового окна вы можете определить вид макета по своему усмотрению: по центру или нет.
Ответ 4
Я использую этот код и проблема решена
Window window = alertDialog.getWindow();
window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
window.setGravity(Gravity.CENTER);