AlertDialog: So entfernen Sie schwarze Ränder über und unter der Ansicht

Diese Frage wurde schon einmal gestellt:Der benutzerdefinierte Titel von AlertDialog hat einen schwarzen Rand

Wurde aber nicht zufriedenstellend beantwortet - und es fehlen einige Angaben.

Ich versuche, ein benutzerdefiniertes Dialogfeld in Android ohne Titel und ohne Schaltflächen am unteren Rand zu erstellen.

Der resultierende Dialog hat jedoch schwarze "Ränder" / "Abstände" / etwas am oberen und unteren Rand der Ansicht.

Vondie Dokumentation:

Ein Dialog, der mit der Basisklasse Dialog erstellt wurde, muss einen Titel haben. Wenn Sie setTitle () nicht aufrufen, bleibt der für den Titel verwendete Bereich leer, ist jedoch weiterhin sichtbar. Wenn Sie überhaupt keinen Titel möchten, sollten Sie Ihr benutzerdefiniertes Dialogfeld mit der AlertDialog-Klasse erstellen. Da ein AlertDialog am einfachsten mit der AlertDialog.Builder-Klasse erstellt wird, haben Sie keinen Zugriff auf die oben verwendete setContentView (int) -Methode. Stattdessen müssen Sie setView (View) verwenden. Diese Methode akzeptiert ein View-Objekt, daher müssen Sie das View-Stammobjekt des Layouts aus XML aufblasen.

Also, das habe ich getan:

Welcome.java

<code>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();
    }
}
</code>

welcomedialog.xml

<code><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>
</code>

HINWEIS: Ich habe versucht mitFrameLayout als die WurzelViewGroup anstattLinearLayout laut vorschlag habe ich irgendwo gefunden - aber das hat nicht geholfen.

Ergebnis

setBackgroundDrawable Vorschlag
<code>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();
    }
}
</code>

Hat bei mir nicht funktioniert.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage