2012-01-21 2 views
6

Я создал пользовательский alertdialog по следующему коду:Android: Пользовательские AlertDialog

AlertDialog.Builder builder; 
AlertDialog alertDialog; 

LayoutInflater inflater = (LayoutInflater)ActivityName.this.getSystemService(LAYOUT_INFLATER_SERVICE); 
View layout = inflater.inflate(R.layout.custom_layout,(ViewGroup)findViewById(R.id.layout_root)); 

       builder = new AlertDialog.Builder(getParent()); 
       builder.setView(layout); 
       alertDialog = builder.create(); 
       alertDialog.show(); 

Проблемы является всплывающим окружен Диалогом фона по умолчанию, имеющему собственное пустое пространство заголовка (как название не задано). Как удалить это. Я попытался поставить пользовательский стиль через ContextThemeWrapper, как builder = new AlertDialog.Builder(new ContextThemeWrapper(getParent(), R.style.CustomDialogTheme));

Но его не работает. Как мне это сделать?!!! Заранее спасибо. Пользовательские XML-стиль приведен ниже:

<style name="CustomDialogTheme" parent="android:style/Theme.Dialog.Alert"> 
      <item name="android:windowIsFloating">false</item> 
      <item name="android:windowNoTitle">true</item> 
     </style> 

This is the output on the emulator

+0

Не показывать название собирается запутать пользователя, вы должны показать заголовок на диалоге, потому что его ожидаемого стандарта. – JoxTraex

+0

Я прикрепил название в макете (т. Е. «Установить как ...», как вы можете видеть) – IronBlossom

ответ

16

использование следующих

Dialog dialog = new Dialog(this, android.R.style.Theme_Translucent_NoTitleBar); 

Накачайте макет и установить вид на содержание диалога и

dialog.setContentView(view); 
+1

спасибо jitendra !! он удаляет фон по умолчанию, но у меня есть еще одна проблема. Для приложения, работающего в приложении, задано значение Theme.NoTitleBar.Fullscreen, но когда диалог всплывает вверх по верхней строке заголовка, слайд вниз снова, и диалог находится не в центральном положении, а в верхнем левом (по умолчанию) положении окна. Можете ли вы мне помочь? – IronBlossom

+1

Диалог диалога = новый диалог (это, android.R.style.Theme_Translucent_NoTitleBar.Fullscreen); – jeet

+0

и я исправил вопрос о центрировании диалога! спасибо – IronBlossom

7
AlertDialog dialog = new AlertDialog.Builder(this) 
.setView(getLayoutInflater().inflate(R.layout.custom_dialog, null)) 
.create(); 

Для прослушивания для событий пользовательского интерфейса:

View view = getLayoutInflater().inflate(R.layout.custom_dialog, null); 
Button btn = (Button)view.findViewById(R.id.the_id_of_the_button); 
btn.setOnClickListener(blah blah); 
AlertDialog dialog = new AlertDialog.Builder(this) 
    .setView(view) 
    .create(); 
Смежные вопросы