web-dev-qa-db-fra.com

Superposer une activité sur une autre activité OR superposer une vue sur une autre

J'ai 2 classes, FirstActivity et SecondActivity.

Première activité

Intent intent=new Intent(getApplicationContext(),SecondActivity.class);
startActivity(intent);

Est-il possible que SecondActivity se superpose à FirstActivity? c'est à dire. FirstActivity est grisé, SecondActivity s'affiche en haut de FirstActivity.

S'il n'est pas possible pour 2 activités différentes, est-il possible de faire une superposition pour 2 vues dans la même activité? J'espère que l'utilisation du dialogue n'est pas la seule option.

26
newbie

Je vous suggère de configurer votre deuxième activité comme une boîte de dialogue - qui atténuera l'arrière-plan. Voici un tutoriel qui pourrait être utile:

http://developer.Android.com/guide/topics/ui/dialogs.html

http://www.helloandroid.com/tutorials/how-display-custom-dialog-your-Android-application

Ou vous pouvez simplement définir le thème dans le manifeste comme une boîte de dialogue pour votre SecondActivity.

24
Alan Moore

Si vous ne souhaitez pas créer de boîte de dialogue, vous pouvez superposer des vues à l'aide d'une disposition relative.

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent" >

    <LinearLayout Android:id="@+id/content"
        Android:layout_width="fill_parent"
        Android:layout_height="fill_parent">
        <TextView Android:id="@+id/text"
            Android:layout_width="fill_parent"
            Android:layout_height="fill_parent"
            Android:text="some content"
            Android:textSize="70dp"/>
    </LinearLayout>

    <LinearLayout Android:id="@+id/overlay"
        Android:layout_width="fill_parent"
        Android:layout_height="fill_parent"
        Android:background="#99000000"
            Android:clickable="true"
        Android:visibility="gone">
        <EditText Android:id="@+id/edittext"
            Android:layout_width="fill_parent"
            Android:layout_height="fill_parent"
            Android:layout_margin="50dp" />
    </LinearLayout>

</RelativeLayout>

Le premier LinearLayout (id/content) est votre mise en page de base où irait votre contenu normal.

Le deuxième LinearLayout (id/superposition) est votre disposition de superposition que vous souhaitez afficher par-dessus la disposition de base. La couleur d'arrière-plan vous donnera cet arrière-plan effacé, et vous pouvez ajouter ce que vous voulez à cette mise en page pour faire votre superposition. Pour afficher la superposition, changez simplement sa visibilité de gone à visible.

22
ImR

Dans le fichier manifeste, déclarez l'activité de seconde activité comme ceci. Android: theme = "@ Android: style/Theme.Dialog" .Alors appelez simplement la seconde activité de la première activité à partir de votre code.

 <activity
                Android:name=".FirstActivity"
                Android:label="@string/title_activity_first" >
                <intent-filter>
                    <action Android:name="Android.intent.action.MAIN" />

                    <category Android:name="Android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
            <activity
                Android:name=".SecondActivity"
                Android:label="@string/title_activity_second" 
                Android:theme="@Android:style/Theme.Dialog"
                >
                <intent-filter>
                    <action Android:name="transparent.text.SECONDACTIVITY"/>

                    <category Android:name="Android.intent.category.DEFAULT" />
                </intent-filter>
            </activity>

Second Activity xml file.you can design as your wish but for reference you have this this.the key concept is in manifestfile (ie) how to define your secondactivity in manifest

    <RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
        xmlns:tools="http://schemas.Android.com/tools"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent" >

        <TextView
            Android:id="@+id/textView1"
            Android:layout_width="wrap_content"
            Android:layout_height="192dp"
            Android:background="#aabbcc"
            Android:text="Sybrant has provided Takoma with a great team which helped us from the beginning to the final stage of our product, to our fullest satisfaction. We have been able to deliver a high quality of eLearning products to our corporate customers like Nissan with Sybrant’s support”"
            tools:context=".FirstActivity" />

        <Button
            Android:id="@+id/button1"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_alignBottom="@+id/textView1"
            Android:layout_alignParentLeft="true"
            Android:layout_marginBottom="43dp"
            Android:layout_marginLeft="80dp"
            Android:text="Button" />

        <TextView
            Android:id="@+id/textView2"
            Android:layout_width="wrap_content"
            Android:layout_height="wrap_content"
            Android:layout_alignRight="@+id/button1"
            Android:layout_below="@+id/textView1"
            Android:layout_marginRight="42dp"
            Android:layout_marginTop="80dp"
            Android:text="TextView" />

    </RelativeLayout>
6
Ruban