Eu tenho uma atividade chamada whereActity
que também tem diálogos filhos. Agora, desejo exibir esta atividade como um diálogo para outra atividade.
Como eu posso fazer isso?
Eu tenho uma atividade chamada whereActity
que também tem diálogos filhos. Agora, desejo exibir esta atividade como um diálogo para outra atividade.
Como eu posso fazer isso?
Respostas:
Para iniciar a atividade como caixa de diálogo, eu a defini assim em
AndroidManifest.xml
:Use esta propriedade dentro de sua
activity
tag para evitar que sua caixa de diálogo apareça na lista de aplicativos usados recentementeSe você deseja impedir que sua caixa de diálogo / atividade seja destruída quando o usuário clica fora da caixa de diálogo:
Após o
setContentView()
seuActivity
uso:this.setFinishOnTouchOutside(false);
Agora, quando ligo,
startActivity()
é exibido como uma caixa de diálogo, com a atividade anterior mostrada quando o usuário pressiona o botão Voltar.Observe que se você estiver usando
ActionBarActivity
(ou tema do AppCompat), será necessário usá-lo@style/Theme.AppCompat.Dialog
.fonte
@style/Theme.AppCompat.Dialog
this.setFinishOnTouchOutside(false);
depois dosetContentView()
método para impedir que a atividade seja destruída quando você clica fora da caixa de diálogo criada.Use este código para que a atividade da caixa de diálogo não seja fechada quando o usuário tocar fora da caixa de diálogo:
requer API nível 11
fonte
Você pode definir esse estilo em values / styles.xml para executar um Splash mais antigo:
E use-o AndroidManifest.xml:
fonte
@drawable/trans
: você deve poder usar o@android:color/transparent
que criaria umColorDrawable
para usar como plano de fundo.<item name="windowNoTitle">true</item>
(não "android"). Veja aqui . Não tenho certeza sobre os outros itens.1 - Você pode usar a mesma atividade que tanto a caixa de diálogo quanto a tela cheia, dinamicamente:
Ligue
setTheme(android.R.style.Theme_Dialog)
antes de ligarsetContentView(...)
esuper.oncreate()
em sua Atividade.2 - Se você não planeja alterar o estilo do tema da atividade, pode usar
(como mencionado por @faisal khan)
fonte
<activity android:theme="@android:style/Theme.Dialog" />
) e defina programaticamente o tema da atividade como um diálogo ou uma atividade no onCreate stackoverflow.com/a/35915764/2898715Se você precisar da versão Appcompat
style.xml
yourmanifest.xml
fonte
<item name="windowNoTitle">true</item>
para fazer o trabalho para mim. Eu também adicionei<item name="android:windowActionBar">false</item>
para uma boa medida.<item name="android:windowNoTitle">true</item>
não funcionou (Android 5.0.1), e eu tive que mudar para<item name="windowNoTitle">true</item>
Se sua atividade estiver sendo renderizada como uma caixa de diálogo, basta adicionar um botão ao xml da sua atividade,
Em seguida, anexe um ouvinte de clique no código Java da sua atividade. No ouvinte, basta chamar
finish()
Isso deve descartar sua caixa de diálogo, retornando você à atividade de chamada.
fonte
Se você deseja remover o cabeçalho da atividade e fornecer uma exibição personalizada para a caixa de diálogo, adicione o seguinte ao bloco de atividades do seu manifesto
e projete seu Activity_layout com a visualização desejada
fonte
Defina o tema no seu arquivo de manifesto do Android.
E defina o estado da caixa de diálogo ao toque para finalizar.
fonte
Criar atividade como caixa de diálogo. Aqui está um exemplo completo
AndroidManife.xml
<activity android:name=".appview.settings.view.DialogActivity" android:excludeFromRecents="true" android:theme="@style/Theme.AppCompat.Dialog"/>
DialogActivity.kt
activity_dialog.xml
fonte
Algumas vezes você pode obter a exceção que é dada abaixo
Causado por: java.lang.IllegalStateException: você precisa usar um tema Theme.AppCompat (ou descendente) com esta atividade.
Então, para resolver, você pode usar uma solução simples
adicione o tema da sua atividade no manifesto como caixa de diálogo para appCompact.
Pode ser útil para alguém.
fonte