android - vegas - supprimer les bandes noires d'une vidéo vlc




AlertDialog: Comment supprimer les bordures noires au-dessus et au-dessous de la vue (4)

Cette question a été posée avant: Le titre personnalisé AlertDialog a une bordure noire

Mais n'a pas reçu de réponse satisfaisante - et manque certaines informations.

J'essaie de créer une boîte de dialogue personnalisée sous Android sans titre et sans boutons en bas.

Cependant, la boîte de dialogue qui en résulte comporte des "bordures" / "espacement" / quelque chose de noir en haut et en bas de la vue.

De la documentation :

Un dialogue avec la classe de base Dialog doit avoir un titre. Si vous n'appelez pas setTitle (), l'espace utilisé pour le titre reste vide, mais toujours visible. Si vous ne voulez pas de titre, vous devez créer votre boîte de dialogue personnalisée à l'aide de la classe AlertDialog. Cependant, comme AlertDialog est créé plus facilement avec la classe AlertDialog.Builder, vous n'avez pas accès à la méthode setContentView (int) utilisée ci-dessus. Au lieu de cela, vous devez utiliser setView (View). Cette méthode accepte un objet View. Vous devez donc gonfler l'objet root de la présentation à partir de XML.

Donc, c'est ce que j'ai fait:

Bienvenue.java

public class Welcome  extends Activity
{
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.welcome);

        LayoutInflater inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE);
        View layout = inflater.inflate(R.layout.welcomedialog, (ViewGroup)findViewById(R.id.layout_root));

        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setView(layout);
        builder.create().show();
    }
}

welcomeialog.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:background="@drawable/texturebg"
              android:id="@+id/layout_root"
              android:orientation="vertical"
              android:padding="40px">
    ...
</LinearLayout>

NOTE: J'ai essayé d'utiliser FrameLayout tant que FrameLayout racine ViewGroup lieu de LinearLayout selon une suggestion que j'ai trouvée quelque part - mais cela n'a pas aidé.

Résultat

setBackgroundDrawable Suggestion

public class Welcome  extends Activity
{
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.welcome);

        LayoutInflater inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE);
        View layout = inflater.inflate(R.layout.welcomedialog, (ViewGroup)findViewById(R.id.layout_root));

        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setView(layout);
        AlertDialog dialog = builder.create();

        dialog.getWindow().setBackgroundDrawable(new ColorDrawable(0));

        dialog.show();
    }
}

N'a pas fonctionné pour moi


Dans mon cas, cette bordure était causée par le thème de l'activité parent pour AlertDialog. Pour se débarrasser complètement de la frontière, donnez-lui un thème différent (ici, Holo):

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

Cela a corrigé pour moi. J'espère que cela t'aides!


Juste pour que la réponse de Steve soit plus claire, cela peut se faire facilement. Par exemple, dans mon cas, la vue que je définissais dans la boîte de dialogue était une vue Web.

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

    WebView webView = new WebView(getActivity());
    webView.loadUrl(" url to show ");


    OnClickListener clickListenerOk = new OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            ...
        }
    };

    OnClickListener clickListenerCancel = new OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            ...
        }
    };

    AlertDialog dialog = new AlertDialog.Builder(getActivity())

            .setPositiveButton("OK", clickListenerOk)

            .setNegativeButton("Cancel",clickListenerCancel)

            .create();

    dialog.setView(webView, 0, 0, 0, 0);

    return dialog;
}

dialog.setInverseBackgroundForced(true);

utilisez ce qui précède dans votre code pour supprimer la bordure de la boîte de dialogue d'alerte.

Reportez-vous à ce lien pour InverseBackgroundForced.

MISE À JOUR Essayez ce code ::::

public class Welcome  extends Activity
{
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.welcome);

        AlertDialog.Builder builder = new AlertDialog.Builder(Welcome.this);
        LayoutInflater _inflater = LayoutInflater.from(Welcome.this);
        View view = _inflater.inflate(R.layout.welcomedialog,null);
        builder.setView(view);

        AlertDialog alert = builder.create();
        alert.show();
    }
}

Note: Essayez aussi en supprimant android: padding = "40px" from welcomeialog.xml.


setBackgroundDrawable(new ColorDrawable(0));

Appelez ceci dans votre boîte de dialogue.