Страницы

Поиск по вопросам

четверг, 23 января 2020 г.

Как убрать рамку вокруг формы DialogFragment?

#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);

Комментариев нет:

Отправить комментарий