Достижение функции модального просмотра в Android
-
25-10-2019 - |
Вопрос
Моя цель - установить модальный вид в моем приложении Android. Я хотел бы открыть одно представление, чей фон будет прозрачным, чтобы пользователь мог увидеть представление.
- Я слышал об использовании прозрачной деятельности, но это может заморозить активность, не так ли?
- Я хотел бы каких -то многоразовых материалов, так как эта точка зрения позвонит в более чем одно действие.
Спасибо
Решение
Вы можете сделать занятие прозрачным, используя этот стиль:
<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>
Объявлено в манифесте, как так:
<activity
android:label="@string/app_name"
android:name=".activity.DialogActivity"
android:theme="@style/TransparentActivity" >
Затем я использую это в качестве макета для моего диалога:
<?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>
Вы можете либо раздуть другие макеты и добавить их в @+id/dialog
Или используйте фрагменты (в зависимости от того, насколько вы смелые).
Надеюсь, это помогло!
Другие советы
Возможно, вы могли бы использовать Dialog
? Вы можете использовать пользовательский вид контента, чтобы отобразить все, что вы хотите, и использовать setCancelable(false)
.
Не связан с StackOverflow