ダイアログとしてのAndroidアクティビティ
-
22-09-2019 - |
質問
名前付きのアクティビティがあります whereActity
子の対話もあります。次に、このアクティビティを別のアクティビティの対話として表示したいと思います。
どうやってやるの?
解決
ダイアログとしてアクティビティを開始するために、私はこのように定義しました AndroidManifest.xml
:
<activity android:theme="@android:style/Theme.Dialog" />
あなたの内部のこのプロパティを使用してください activity
ダイアログが最近使用されたアプリリストに表示されることを避けるためのタグ
android:excludeFromRecents="true"
ユーザーがダイアログの外側をクリックすると、ダイアログ /アクティビティが破壊されないようにしたい場合:
後 setContentView()
あなたの中で Activity
使用する:
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);