AlertDialog: Jak usunąć czarne obramowania powyżej i poniżej widoku
To pytanie zostało zadane wcześniej:Tytuł niestandardowy AlertDialog ma czarną ramkę
Ale odpowiedź nie była zadowalająca - i brakuje pewnych informacji.
Próbuję utworzyć niestandardowe okno dialogowe w systemie Android bez tytułu i bez żadnych przycisków na dole.
Jednak wynikowe okno dialogowe ma czarne „obramowania” / „odstępy” / coś wzdłuż górnej i dolnej części widoku.
Okno dialogowe utworzone za pomocą podstawowej klasy Dialog musi mieć tytuł. Jeśli nie wywołasz setTitle (), to miejsce używane przez tytuł pozostanie puste, ale nadal będzie widoczne. Jeśli nie chcesz w ogóle tytułu, powinieneś utworzyć niestandardowe okno dialogowe za pomocą klasy AlertDialog. Ponieważ jednak AlertDialog jest tworzony najłatwiej z klasą AlertDialog.Builder, nie masz dostępu do metody setContentView (int) używanej powyżej. Zamiast tego musisz użyć setView (Widok). Ta metoda akceptuje obiekt View, więc musisz nadmuchać główny obiekt widoku układu z XML.
Tak właśnie zrobiłem:
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>
UWAGA: Próbowałem użyćFrameLayout
jako rootViewGroup
zamiastLinearLayout
zgodnie z sugestią, którą gdzieś znalazłem - ale to nie pomogło.
Wynik
setBackgroundDrawable Sugestia
<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>
Nie działało dla mnie.