回答:
ダイアログとしてアクティビティを開始するには、次のように定義しました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
代わりに。
@style/Theme.AppCompat.Dialog
this.setFinishOnTouchOutside(false);
後のsetContentView()
メソッドを追加して、作成したダイアログの外側をクリックしたときにアクティビティが破棄されないようにします。
このコードを使用して、ユーザーがダイアログボックスの外側をタッチしたときにダイアログアクティビティが閉じないようにします。
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">
@drawable/trans
:背景として使用@android:color/transparent
するを作成することができるはずColorDrawable
です。
<item name="windowNoTitle">true</item>
(「android」ではありません)。こちらをご覧ください。他のアイテムについてはわかりません。
1-ダイアログとフルスクリーンの両方で同じアクティビティを動的に使用できます。
コールsetTheme(android.R.style.Theme_Dialog)
を呼び出す前にsetContentView(...)
してsuper.oncreate()
、あなたの活動に。
2-使用できるアクティビティテーマスタイルを変更する予定がない場合
<activity android:theme="@android:style/Theme.Dialog" />
(@faisal khanが言及したように)
<activity android:theme="@android:style/Theme.Dialog" />
)のダイアログテーマに設定し、プログラムでアクティビティのテーマをダイアログまたはonCreateのアクティビティに設定しますstackoverflow.com/a/35915764/2898715
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>
<item name="windowNoTitle">true</item>
させるために追加する必要がありました。私はまた、適度に追加しました<item name="android:windowActionBar">false</item>
。
<item name="android:windowNoTitle">true</item>
は機能せず(Android 5.0.1)、変更する必要がありました<item name="windowNoTitle">true</item>
アクティビティがダイアログとしてレンダリングされている場合は、アクティビティの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マニフェストファイルにテーマを設定します。
<activity android:name=".LoginActivity"
android:theme="@android:style/Theme.Dialog"/>
タッチでダイアログの状態を設定して終了します。
this.setFinishOnTouchOutside(false);
ダイアログとしてアクティビティを作成します。これは完全な例です
AndroidManife.xml
<activity android:name=".appview.settings.view.DialogActivity" android:excludeFromRecents="true" android:theme="@style/Theme.AppCompat.Dialog"/>
DialogActivity.kt
class DialogActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_dialog)
this.setFinishOnTouchOutside(true)
btnOk.setOnClickListener {
finish()
}
}
}
activity_dialog.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#0072ff"
android:gravity="center"
android:orientation="vertical">
<LinearLayout
android:layout_width="@dimen/_300sdp"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/txtTitle"
style="@style/normal16Style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:text="Download"
android:textColorHint="#FFF" />
<View
android:id="@+id/viewDivider"
android:layout_width="match_parent"
android:layout_height="2dp"
android:background="#fff"
android:backgroundTint="@color/white_90"
app:layout_constraintBottom_toBottomOf="@id/txtTitle" />
<TextView
style="@style/normal14Style"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:paddingTop="20dp"
android:paddingBottom="20dp"
android:text="Your file is download"
android:textColorHint="#FFF" />
<Button
android:id="@+id/btnOk"
style="@style/normal12Style"
android:layout_width="100dp"
android:layout_height="40dp"
android:layout_marginBottom="20dp"
android:background="@drawable/circle_corner_layout"
android:text="Ok"
android:textAllCaps="false" />
</LinearLayout>
</LinearLayout>
以下に示す例外が発生する場合があります
原因:java.lang.IllegalStateException:このアクティビティでは、Theme.AppCompatテーマ(または子孫)を使用する必要があります。
だから解決するためにあなたは簡単な解決策を使うことができます
appCompactのダイアログとして、マニフェストにアクティビティのテーマを追加します。
android:theme="@style/Theme.AppCompat.Dialog"
それは誰かのために役立ちます。