Pergunta

Eu tenho uma atividade chamada whereActity que também possui diálogos infantis.Agora, quero exibir esta atividade como uma caixa de diálogo para outra atividade.

Como eu posso fazer isso?

enter image description here

Foi útil?

Solução

Para iniciar a atividade como diálogo eu defini assim em AndroidManifest.xml:

<activity android:theme="@android:style/Theme.Dialog" />

Use esta propriedade dentro do seu activity tag para evitar que sua caixa de diálogo apareça na lista de aplicativos usados ​​recentemente

android:excludeFromRecents="true"

Se você quiser impedir que sua caixa de diálogo/atividade seja destruída quando o usuário clicar fora da caixa de diálogo:

Depois setContentView() na tua Activity usar:

this.setFinishOnTouchOutside(false);

Agora quando eu ligo startActivity() ele é 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 AppCompat), você precisará usar @style/Theme.AppCompat.Dialog em vez de.

Outras dicas

Use este código para que a atividade de diálogo não seja fechada quando o usuário tocar fora da caixa de diálogo:

this.setFinishOnTouchOutside(false);

requer nível de API 11

Você pode definir esse estilo em valores/styles.xml para executar um splash mais antigo:

   <style name="Theme.UserDialog" parent="android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:background">@android:color/transparent</item>
        <item name="android:windowBackground">@drawable/trans</item>
    </style>

E use -o androidmanifest.xml:

   <activity android:name=".SplashActivity"
          android:configChanges="orientation"
          android:screenOrientation="sensor"
          android:theme="@style/Theme.UserDialog">

1 - Você pode usar a mesma atividade que a caixa de diálogo e a tela cheia, dinamicamente:

Ligar setTheme(android.R.style.Theme_Dialog) antes de ligar setContentView(...) e super.oncreate() em sua atividade.

2 - Se você não planeja alterar o estilo de tema da atividade que pode usar

<activity android:theme="@android:style/Theme.Dialog" />

(como mencionado por @faisal khan)

Se você precisar da versão appCompat

style.xml

    <!-- Base application theme. -->
    <style name="AppDialogTheme" parent="Theme.AppCompat.Light.Dialog">
        <!-- Customize your theme here. -->
        <item name="windowActionBar">false</item>
        <item name="android:windowNoTitle">true</item>
    </style>

yourManifest.xml

    <activity
          android:name=".MyActivity"
          android:label="@string/title"
          android:theme="@style/AppDialogTheme">
    </activity>

Se sua atividade estiver sendo renderizada como uma caixa de diálogo, basta adicionar um botão ao XML da sua atividade,

<Button
    android:id="@+id/close_button"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Dismiss" />

Em seguida, anexe um ouvinte de clique no código Java da sua atividade. No ouvinte, basta ligar finish()

Button close_button = (Button) findViewById(R.id.close_button);
close_button.setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        finish();
    }
});

Isso deve descartar sua caixa de diálogo, devolvendo -o à atividade de chamada.

Se você deseja remover o cabeçalho da atividade e fornecer uma visualização personalizada para a caixa de diálogo, adicione o seguinte ao bloco de atividades de você manifestar

android:theme="@style/Base.Theme.AppCompat.Dialog"

e projete sua atividade_layout com a visão desejada

Defina o tema no seu arquivo de manifesto do Android.

<activity android:name=".LoginActivity"
            android:theme="@android:style/Theme.Dialog"/>

E defina o estado de diálogo no toque para terminar.

this.setFinishOnTouchOutside(false);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top