Intereting Posts
Могу ли я установить свойство Textview как оправдание? API распознавания лиц для Java Android Как захватить событие onclick в отключенном EditText в приложении для Android './gradlew -Dtest.single = тест SimpleTest' запускает все тесты, которые у меня есть Как проверить, существует ли таблица в базе данных Android SQLite? Eclipse загружает данные с 2,3 до 4,4 каждый раз, когда вы открываете xml-файл Производительность Choppy ProgressBar при использовании в ListView Android: setResult не работает Как преобразовать сообщение facebook created_time в часовой пояс пользователя? Java: разные результаты при декодировании base64 строки с java.util.Base64 vs android.util.Base64 Android 5.0 делает невыделенные флажки невидимыми, когда фон белый Как я могу заставить GoogleApiClient запрашивать пользовательский интерфейс выбора учетной записи каждый раз, когда я вызываю соединение? Отправлять данные с телефона на телефон через Интернет? Как получить доступ к папке данных / данных на устройстве Android? Сообщение от Android до Android без Accesspoint

Диалог пользовательских предупреждений не центрирован по вертикали на Android

Я создал диалоговое окно настраиваемого предупреждения, которое будет отображаться в конце моей игры, чтобы игрок мог ввести его имя, чтобы сохранить его. Проблема заключается в том, когда я вызываю show() в диалоговом окне, но не вертикально по центру! Это немного ниже, чем нужно, и независимо от того, какие свойства я устанавливаю в xml или при использовании setGravity() .

Я думаю, что это та же проблема, что и упомянутая здесь , но никто не дал правильного ответа.

Спасибо за вашу помощь.

Для получения более подробной информации, вот мой код:

  AlertDialog.Builder builder; LayoutInflater inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE); View layout = inflater.inflate(R.layout.newrecord,(ViewGroup)findViewById(R.layout.shoot)); builder = new AlertDialog.Builder(this); builder.setView(layout); newRecDialog = builder.create(); 

И вот код первого элемента XML-макета newrecord.xml :

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_height="fill_parent" android:layout_width="fill_parent" android:gravity="center" android:padding="10dp" android:baselineAligned="true"> 

Вот выходной снимок экрана: alt text http://the.niox.free.fr/divers/dialog_offset.png

Solutions Collecting From Web of "Диалог пользовательских предупреждений не центрирован по вертикали на Android"

Здесь описывается ошибка. AlertDialog резервирует пространство для панели заголовка / значка, даже если нет ни названия, ни значка.

Исправить, я думаю, довольно просто: он должен установить верхнюю панель в GONE, как и для панели кнопок, в случае отсутствия кнопок. Пока это не сделано, единственным обходным решением является реализация вашего собственного подкласса Dialog.

Для этого вы можете использовать Activity вместо специального оповещения. Вы должны установить тему активности как диалог в файле манифеста Android:

 android:theme="@android:style/Theme.Dialog" 

И вы можете настроить макет действий xml в соответствии с вашими потребностями.

Если вы реализуете свой собственный диалог, строка requestWindowFeature (Window.FEATURE_NO_TITLE) скрывает панель заголовка, а диалоговое окно центрируется на экране. Возможно, он работает и с AlertDialog.

Android: тема = "@ андроид: стиль / Theme.Dialog"

Установите атрибут на вашем AlertDialog как android:gravity="center" или программно, как setGravity(Gravity.CENTER) . Этот Gravity предназначен для вашего макета только для отображения вашего мобильного устройства. Если вы используете пользовательское название, оно не выглядело как вертикальное по центру.

Не совсем ответ, но у меня была аналогичная проблема. Похоже, что он центрирован, но предполагает, что AlerterDialog имеет набор названий. В моем случае я просто установил заголовок.

Можете ли вы попробовать использовать AlertDialog.Builder.setCustomTitle(View); Вместо setView ? Мы используем его, потому что диалоговое окно предупреждения выглядит немного лучше, чем диалог с пустым заголовком.

Вы должны использовать следующую строку в xml, сначала удалите эту строку дополнений из вашего xml и после этого

 android:layout_gravity="center" 

После этого ваш диалог появится в центре, и если вы используете маржу слева и т. Д., Чем удалите это, а также если вы используете это

 android:layout_width="fill_parent" 

Чем изменить его с помощью

 android:layout_width="wrap_content" 

После этого ваш диалог появится в центре.

Пытаться:

 newRecDialog.getWindow().getAttributes().gravity = Gravity.CENTER; 

Вам нужно отключить заголовок окна. Сначала создайте собственный стиль для своего диалога (обязательно используйте родительскую тему, которая соответствует вашим потребностям):

 <style name="CustomDialog" parent="@android:style/Theme.Dialog"> <item name="android:windowNoTitle">true</item> </style> 

Затем примените свой стиль к построителю диалогового окна:

 AlertDialog.Builder builder; LayoutInflater inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE); View layout = inflater.inflate(R.layout.newrecord,(ViewGroup)findViewById(R.layout.shoot)); builder = new AlertDialog.Builder( new ContextThemeWrapper(this, R.style.CustomDialog)); builder.setView(layout); newRecDialog = builder.create();