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?
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);
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));
Vous devez fournir votre propre thème de dialogue, voir http://developer.Android.com/guide/topics/ui/themes.html et Comment changer de thème pour AlertDialog
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
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.
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)
}