Достижение функции модального просмотра в Android - PullRequest
4 голосов
/ 29 ноября 2011

Моя цель - установить модальное представление в моем приложении для Android. Я хотел бы открыть один вид, фон которого будет прозрачным, чтобы пользователь мог видеть вид сзади.

  1. Я слышал об использовании прозрачной активности, но это может заморозить активность, не так ли?
  2. Я хотел бы использовать что-то повторно используемое, так как в этом представлении будет задействовано несколько действий.

Спасибо

Ответы [ 2 ]

2 голосов
/ 29 ноября 2011

Вы можете сделать фон деятельности прозрачным, используя этот стиль:

<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 или использовать фрагменты (в зависимости от того, насколько вы смелы).

Надеюсь, это помогло!

1 голос
/ 29 ноября 2011

Возможно, вы могли бы использовать Dialog?Вы можете использовать пользовательский вид контента для отображения того, что вы хотите, и использовать setCancelable(false).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...