#java #android #dialogfragment #android_dialog
У меня есть DialogFragment которому я передаю кастомный layout для показа.
Этому layout я задаю background в котором закругляю немного края. И ожидаю увидеть
красивую форму layout с закругленными краями, но получается вот такое
все вроде как и хотелось, но почему этот фон появляется сверху и снизу формы?
Когда у меня была такая ситуация с активити(было то же самое), я ее решил так как
описано здесь
Я добавил кастомную тему, бекграунд как мне нужно и установил тему в манифесте для
этого активити...
Но в этой ситуации, я ж не могу установить кастомную тему в манифесте для layout
который передаю в DialogFragment , так как в манифесте только активити...
Я пробовал присвоить тему самому DialogFragment.
Вот моя тема для него, которая описывает анимацию
и вот так я добавляю в нее те параметры которые мне помогли ранее когда была проблема
с активити получается вот так
Но ничего не происходит... В активити это работает, здесь нет... Я думаю потому,
что в активити уже заложен layout и оно сразу его обрабатывает, а тут я как бы динамически
передаю нужный мне layout для показа в DialogFragment...
Как избавиться от этих кусков сверзу и снизу формы?
Поправка:
Как стало понятно, проблема в следующем... У меня стоит анимация на этом диалоге
и реализую я ее через установку стилей, когда создаю билдер
вот так
AlertDialog.Builder adb = new AlertDialog.Builder(getActivity(), R.style.DialogFragmentTheme);
и тогда анимация работает отлично. Если устанавливать R.style.DialogFragmentTheme
через метод onResume(), или в XML файле или в перелпределенном методе getTheme(), то
анимация не работает. Но зато если не работает анимация то срабаьывает метод
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
и нет никакой рамки вокруг диалога. Но тогда не работает анимация...
Как можно сделать так, чтоб и анимация работала и рамки вокруг не было?
Ответы
Ответ 1
Попробуйте в DialogFragment прописать @Override public void onResume() { super.onResume(); getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); setStyle(DialogFragment.STYLE_NO_FRAME, android.R.style.DialogFragmentTheme); }Ответ 2
Предлагаю использовать Activity вместо DialogFragment. В файл AndroidManifest.xml добавьте новый стиль, с настройкой прозрачного фона для АктивностиНиже приведен стиль для Activity с спрозрачным фоном, т. е. у вас автоматом уже не будет стандартной рамки от DialogFragment. Добавить актовность на экран: Intent demoActivity = new Intent(this, DemoActivity.class); startActivity(demoActivity);
Комментариев нет:
Отправить комментарий