web-dev-qa-db-fra.com

Android fait apparaître une boîte de dialogue en plein écran

J'ai besoin de la boîte de dialogue pour remplir l'écran, à l'exception de l'espace en haut et en bas . J'ai cherché une solution, mais je n'ai pas pu en trouver une probablement parce que je la déclare dans un onClickListener. Quelqu'un peut-il s'il vous plaît donner une solution?

Code d'activité:

sort.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                AlertDialog.Builder sort = new AlertDialog.Builder(HomeScreen.this);
                // Get the layout inflater
                LayoutInflater inflater = HomeScreen.this.getLayoutInflater();
                View sortView = inflater.inflate(R.layout.sort_layout, null);
                sort.setView(sortView);
                sort.create().show();
            }
        });

XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    Android:layout_marginBottom="50dp"
    Android:layout_marginTop="50dp"
    Android:background="@color/white"
    Android:orientation="vertical" Android:layout_gravity="center">
    + some more stuff here I dont think it's relevant
</LinearLayout>

enter image description here

22
Mihai Bratulescu

définissez ici la largeur et la largeur de votre écran dans la boîte de dialogue.

WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
    lp.copyFrom(dialog.getWindow().getAttributes());
    lp.width = width;
    lp.height = height;
    dialog.getWindow().setAttributes(lp);

ou dans vos styles créer un style comme celui-ci alors

 <style name="DialogTheme" parent="Android:Theme.Dialog">

    <item name="Android:layout_width">fill_parent</item>
    <item name="Android:layout_height">fill_parent</item>


    <!-- No backgrounds, titles or window float -->
    <item name="Android:windowBackground">@null</item>
    <item name="Android:windowNoTitle">true</item>
    <item name="Android:windowIsFloating">false</item>
</style>

créer un objet de dialogue comme celui-ci

dialog = new Dialog(this, R.style.DialogTheme);

Modifier ::

obtenez la largeur et la hauteur comme celle-ci pour tout appareil à remplir.

WindowManager manager = (WindowManager) getSystemService(Activity.WINDOW_SERVICE);
    int width, height;
    LayoutParams params;

    if (Build.VERSION.SDK_INT > VERSION_CODES.FROYO) {
        width = manager.getDefaultDisplay().getWidth();
        height = manager.getDefaultDisplay().getHeight();
    } else {
        Point point = new Point();
        manager.getDefaultDisplay().getSize(point);
        width = point.x;
        height = point.y;
    }
41
kalyan pvs

commencez par créer un style personnalisé pour la boîte de dialogue dans le fichier style.xml:

<style name="full_screen_dialog" parent="@Android:style/Theme.Dialog">
    <item name="Android:windowNoTitle">true</item>
    <item name="Android:windowFullscreen">true</item>
    <item name="Android:windowIsFloating">true</item>
    <item name="Android:windowContentOverlay">@null</item>
    <item name="Android:windowAnimationStyle">@Android:style/Animation.Dialog</item>
    <item name="Android:windowSoftInputMode">stateUnspecified|adjustPan</item>
    <item name="Android:windowBackground">@Android:color/transparent</item>
</style>

Ensuite, après avoir défini ce thème dans votre boîte de dialogue d'alerte:

 AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(this,  R.style.full_screen_dialog));

Ou vous pouvez appeler une nouvelle activité et attribuer à cette activité un style personnalisé en tant que thème de votre fichier manifeste ...

11
Piyush

Cela peut être utile pour quelqu'un .. Je veux qu'une boîte de dialogue prenne toute la largeur de l'écran. cherché beaucoup mais rien trouvé utile. Enfin cela a fonctionné pour moi:

mDialog.setContentView(R.layout.my_custom_dialog);
mDialog.getWindow().setBackgroundDrawable(null);

après avoir ajouté ceci, ma boîte de dialogue apparaît sur toute la largeur de l'écran.

3
Rahul Sharma

essaye ça

pour l’activité ayant le style Theme.Dialog, procédez comme suit:

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

setContentView(R.layout.your_layout);

getWindow().setLayout(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT);
}
3
mdDroid

Faire un objet comme ci-dessous thème

Dialog objD = new Dialog(this,     Android.R.style.Theme_Translucent_NoTitleBar);

Je pense que vous devriez essayer celui-ci:

À l'intérieur du dialogFragment :

@Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setStyle(DialogFragment.STYLE_NORMAL, Android.R.style.Theme_Black_NoTitleBar_Fullscreen);
        }
0
siddharth patel
   Dialog dialog2 = new Dialog(context, R.style.DialogTheme);
    dialog2.requestWindowFeature(Window.FEATURE_NO_TITLE);
    dialog2.getWindow().setBackgroundDrawable(null);
    dialog2.setContentView(R.layout.dialog_img);
    WindowManager.LayoutParams lp = dialog2.getWindow().getAttributes();
    Window window = dialog2.getWindow();
    lp.copyFrom(window.getAttributes());
    lp.width = WindowManager.LayoutParams.MATCH_PARENT;
    lp.height = WindowManager.LayoutParams.MATCH_PARENT;
    window.setAttributes(lp);
    lp.gravity = Gravity.CENTER;
    final ImageView imgprofile=(ImageView)dialog2.findViewById(R.id.img_centre);
    Picasso.with(context)
            .load(arrayImages.get(position).get("image"))
            .resize(800,1000)
            .centerInside()
            .into(imgprofile, new Callback() {

                @Override
                public void onSuccess() {

                }

                @Override
                public void onError() {
                    imgprofile.setImageResource(R.drawable.user);
                }
            });
    dialog2.show();

Et dans votre fichier dialog_img.xml, ajoutez une Imageview avec scaleType (fitXY).

0
niks_ahlawat