web-dev-qa-db-fra.com

Comment personnaliser la largeur et la hauteur lors de l'affichage d'une activité en tant que dialogue

Si j'ai défini une activité:

public class DialogActivity extends Activity{

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(dialog_activity.xml);
    }


}

Je souhaite afficher l'activité ci-dessus comme une boîte de dialogue. Ainsi, dans le fichierAndroidManifest.xml, je déclare cette activité comme ci-dessous:

<activity Android:name=".DialogActivity" Android:theme="@Android:style/Theme.Dialog"/>

Tout va bien à ce stade, mon DialogActivity a été affiché sous forme de dialogue.

Le problème est comment personnaliser la largeur et la hauteur de DialogActivity pour qu’elle ressemble davantage à une petite boîte de dialogue? (Actuellement, il occupe la majeure partie de l'écran par défaut)

----------------------------Mettre à jour------------------- ----

J'ai défini un thème personnalisé comme ci-dessous:

<style name="myDialog" parent="@Android:style/Theme.Dialog">
        <item name="Android:windowFrame">@null</item>
        <item name="Android:windowNoTitle">true</item>
        <item name="Android:windowIsFloating">true</item>
        <item name="Android:windowContentOverlay">@null</item>

        <item name="Android:width">100dip</item> 
        <item name="Android:height">100dip</item>

</style>

Ensuite, déclarez le DialogActivity dansAndroidManifest.xmlas.

<activity Android:name=".DialogActivity" Android:theme="@style/myDialog"/>

Mon DialogActivity occupe même tout l’écran :(. La largeur et hauteur définition:

<item name="Android:width">100dip</item>

dans le thème ne prennent aucun effet, pourquoi?

28
Leem

J'ai enfin trouvé un moyen de personnaliser la taille de ma DialogActivity

Dans la méthode onCreate() de DialogActivity, ajoutez le code suivant:

WindowManager.LayoutParams params = getWindow().getAttributes();  
params.x = -20;  
params.height = 100;  
params.width = 550;  
params.y = -10;  

this.getWindow().setAttributes(params); 
41
Leem

J'ai eu un problème similaire, j'ai utilisé le thème suivant pour mon activité

Android:theme="@style/Base.Theme.AppCompat.Light.Dialog"

Le code suivant a résolu mon problème

 setContentView(R.layout.activity_layout);
 getWindow().setLayout(width(pixels),height(pixels));
1
Harish Rana
0
Stefan H Singer

Vous pouvez définir la hauteur et la largeur de la mise en page dans un fichier XML de mise en page.

Vous pouvez même mentionner des valeurs telles que "240px" pour Android: layout_width/Android: layout_height

0
Maidul

Il y a un code d'une ligne sans problème avec les LayoutParams qui est

getWindow().setLayout((int)(width*.8),(int)(height*.25));

C'est ce que j'ai déjà utilisé dans l'un de mes projets et que je cherche maintenant, mais que j'ai trouvé dans le même projet.

0

Vous pouvez simplement changer les paramètres de la fenêtre dans votre activité comme:

override fun onStart() {
        super.onStart()
        window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
    }
0
Djek-grif