AlertDialog: Como remover bordas pretas acima e abaixo da vista
Esta pergunta foi feita antes:O título personalizado AlertDialog tem borda preta
Mas não foi respondido satisfatoriamente - e está faltando alguma informação.
Estou tentando criar um diálogo personalizado no Android sem um título e sem nenhum botão na parte inferior.
No entanto, a caixa de diálogo resultante tem "bordas" / "espaçamento" pretos / algo na parte superior e inferior da exibição.
Uma caixa de diálogo feita com a classe de diálogo base deve ter um título. Se você não chamar setTitle (), o espaço usado para o título permanecerá vazio, mas ainda visível. Se você não quiser um título, crie sua caixa de diálogo personalizada usando a classe AlertDialog. No entanto, como um AlertDialog é criado mais facilmente com a classe AlertDialog.Builder, você não tem acesso ao método setContentView (int) usado acima. Em vez disso, você deve usar setView (View). Esse método aceita um objeto View, portanto, você precisa inflar o objeto View raiz do layout do XML.
Então, foi o que eu fiz:
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>
NOTA: Eu tentei usarFrameLayout
como a raizViewGroup
ao invés deLinearLayout
de acordo com uma sugestão que encontrei em algum lugar - mas isso não ajudou.
Resultado
Sugestão setBackgroundDrawable
<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>
Não funcionou para mim.