Dialogue sur mesure
Ceci est un exemple de dialogue "sur mesure" (on dit en anglais "custom dialog"). Ce type de dialogue n'a pas une apparence prédéfinie par Android, mais est basé sur son propre fichier de mise en page.
MainActivity.java
package net.codeandroid.dialoguesurmesure;
import androidx.appcompat.app.AppCompatActivity;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
final Context mContexte = this;
private Button mBouton;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mBouton = (Button) findViewById(R.id.boutonDialogue);
mBouton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View vue) {
// dialogue sur mesure
final Dialog dialog = new Dialog(mContexte);
dialog.setContentView(R.layout.custom);
dialog.setTitle("Exemple de dialogue sur mesure");
// réglage des composants du dialogue sur mesure
TextView texte = (TextView) dialog.findViewById(R.id.texte);
texte.setText("I live in a happy little chalet !");
ImageView image = (ImageView) dialog.findViewById(R.id.image);
image.setImageResource(R.drawable.bob_ross);
Button dialogButton = (Button) dialog.findViewById(R.id.btnOk);
// ferme le dialogue par un clic sur le bouton
dialogButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View vue) {
dialog.dismiss();
}
});
dialog.show();
}
});
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center">
<Button
android:id="@+id/boutonDialogue"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Afficher le dialogue" />
</LinearLayout>
custom.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_margin="20dp"
android:padding="20dp"
android:background="#FFEEEEEE">
<ImageView
android:id="@+id/image"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
<TextView
android:id="@+id/texte"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="35sp"/>
<Button
android:id="@+id/btnOk"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Ok"/>
</LinearLayout>
