Erreichen der Modalansicht -Funktion in Android
-
25-10-2019 - |
Frage
Mein Ziel ist es, eine modale Ansicht in meiner Android -Anwendung festzulegen. Ich möchte eine Ansicht öffnen, deren Hintergrund transparent sein würde, damit der Benutzer die Ansicht dahinter sehen kann.
- Ich habe von transparenter Aktivitäten gehört, aber dies könnte die Aktivität dahinter einfrieren, nicht wahr?
- Ich hätte gerne eine Art wiederverwendbares Zeug, da diese Ansicht mehr als eine Aktivität einrufen wird.
Vielen Dank
Lösung
Mit diesem Stil können Sie einen Aktivitätenhintergrund transparent machen:
<style name="TransparentActivity" parent="android:Theme.Black.NoTitleBar.Fullscreen">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowAnimationStyle">@android:style/Animation</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowFullscreen">true</item>
</style>
Im Manifest so deklariert wie so:
<activity
android:label="@string/app_name"
android:name=".activity.DialogActivity"
android:theme="@style/TransparentActivity" >
Ich benutze dies dann als Layout für meinen Dialog:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:id="@+id/containerPageContainer">
<FrameLayout android:layout_height="wrap_content"
android:layout_width="match_parent"
android:background="@drawable/panel_picture_frame_bg_focus_blue"
android:layout_gravity="center"
android:id="@+id/dialog"/>
</FrameLayout>
Sie können entweder andere Layouts aufblasen und es hinzufügen @+id/dialog
oder verwenden Sie Fragmente (je nachdem, wie mutig Sie sind).
Hoffe das hat geholfen!
Andere Tipps
Vielleicht könnten Sie eine verwenden Dialog
? Sie können eine benutzerdefinierte Inhaltsansicht verwenden, um das anzuzeigen, was Sie wollen, und verwenden setCancelable(false)
.