私はwhereActity
という名前のActivityも持っていて、それには子ダイアログもあります。それでは、このアクティビティを別のアクティビティのダイアログとして表示したいと思います。
どうやってやるの?
ダイアログとして活動を開始するために、私はAndroidManifest.xml
でそれをこのように定義しました:
<activity Android:theme="@Android:style/Theme.Dialog" />
Dialogが最近使用したアプリのリストに表示されないようにするには、activity
タグ内でこのプロパティを使用します。
Android:excludeFromRecents="true"
ユーザーがダイアログの外側をクリックしたときにダイアログ/アクティビティが破壊されないようにするには、次の手順を実行します。
Activity
のsetContentView()
の後には、
this.setFinishOnTouchOutside(false);
startActivity()
を呼び出すとダイアログとして表示され、ユーザーが戻るボタンを押すと前のアクティビティが表示されます。
ActionBarActivity
(またはAppCompatテーマ)を使用している場合は、代わりに@style/Theme.AppCompat.Dialog
を使用する必要があります。
このコードを使用して、ユーザーがダイアログボックスの外側をタッチしたときにダイアログアクティビティが閉じないようにします。
this.setFinishOnTouchOutside(false);
aPIレベル11が必要
このスタイルをvalues/styles.xmlで定義して、以前のスプラッシュを実行することができます。
<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>
AndroidManifest.xmlを使用してください。
<activity Android:name=".SplashActivity"
Android:configChanges="orientation"
Android:screenOrientation="sensor"
Android:theme="@style/Theme.UserDialog">
1 - ダイアログと全画面の両方で同じアクティビティを動的に使用できます。
アクティビティでsetTheme(Android.R.style.Theme_Dialog)
およびsetContentView(...)
を呼び出す前にsuper.oncreate()
を呼び出してください。
2 - あなたが使用できる活動のテーマスタイルを変更する予定がない場合
<activity Android:theme="@Android:style/Theme.Dialog" />
(@faisal khanが述べたように)
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>
アクティビティがダイアログとしてレンダリングされている場合は、アクティビティのxmlにボタンを追加するだけです。
<Button
Android:id="@+id/close_button"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:text="Dismiss" />
次に、アクティビティのJavaコードにクリックリスナーを添付します。リスナーで、単にfinish()
を呼び出します
Button close_button = (Button) findViewById(R.id.close_button);
close_button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
それはあなたの対話を却下し、あなたを呼び出し元のアクティビティに戻すはずです。
アクティビティヘッダを削除してダイアログにカスタムビューを表示する場合は、マニフェストのアクティビティブロックに以下を追加します。
Android:theme="@style/Base.Theme.AppCompat.Dialog"
そしてあなたの望むビューであなたのactivity_layoutをデザインしてください
あなたのAndroidマニフェストファイルにテーマを設定します。
<activity Android:name=".LoginActivity"
Android:theme="@Android:style/Theme.Dialog"/>
そして、ダイアログの状態をタッチで設定します。
this.setFinishOnTouchOutside(false);