Я знаю, что ему больше года, но звонок requestFeature()
никогда не решал мою проблему.На самом деле я не называю это вообще.
Это была проблема с надуванием представления, я полагаю.Несмотря на все мои поиски, я так и не нашел подходящего решения, пока не поигрался с различными методами надувания вида.
AlertDialog.Builder - простое решение, но требует большой работы, если вы используете onPrepareDialog()
чтобы обновить это представление.
Еще одна альтернатива - использовать AsyncTask для диалогов.
Ниже приводится окончательное решение, которое я использовал:
public class CustomDialog extends AlertDialog {
private View content;
public CustomDialog(Context context) {
super(context);
LayoutInflater li = LayoutInflater.from(context);
content = li.inflate(R.layout.custom_view, null);
setUpAdditionalStuff(); // do more view cleanup
setView(content);
}
private void setUpAdditionalStuff() {
// ...
}
// Call ((CustomDialog) dialog).prepare() in the onPrepareDialog() method
public void prepare() {
setTitle(R.string.custom_title);
setIcon( getIcon() );
// ...
}
}
* Некоторые дополнительныепримечания:
- Не полагайтесь на сокрытие названия.Часто там есть пустое место, несмотря на то, что заголовок не задан.
- Не пытайтесь создать свой собственный вид с нижним колонтитулом и средним видом.Заголовок, как указано выше, может не быть полностью скрытым, несмотря на запрос FEATURE_NO_TITLE.
- Не используйте в качестве стиля представление содержимого с помощью цветовых атрибутов или размера текста.Позвольте диалогу справиться с этим, иначе вы рискуете поместить черный текст в темно-синий диалог, потому что поставщик инвертировал цвета.