¿Cómo cambio la forma de un diálogo?

En mi aplicación utilizo muchos cuadros de diálogo (ventanas emergentes) y quiero darles una forma de esquina redondeada.

La forma en que creo estas ventanas emergentes es esta:

En el código Java, creo una función como esta:

private void showpopup(){

   dialog = new Dialog(this);
   dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
   dialog.setContentView(getLayoutInflater().inflate(R.layout.popup, null));
   dialog.setCancelable(false);



    TextView fin = (TextView) dialog.findViewById(R.id.solu);
    fin.setText("¡¡safsfasfsafs!!");  


   fin.setOnClickListener(new OnClickListener() {
           public void onClick(View v) {
               dialog.dismiss();
               }

   });   
  dialog.show();
}

El diseño que llamo allí se crea de esta manera:

<?xml version="1.0" encoding="utf-8" ?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center"
  >

    <LinearLayout
        android:id="@+id/linearLayout1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
          android:background="@drawable/shape"
        android:orientation="vertical"
        android:padding="10dp" 
        >


<TextView
    android:id="@+id/solu"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="25sp"
    android:padding="10dp"
    android:textAppearance="?android:attr/textAppearanceLarge" />
  </LinearLayout>

</LinearLayout>

y finalmente, la "forma" xml que llamo en segundo plano es esta:

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >

<corners android:radius="20dp"/>

<stroke
android:width="1dp"
android:color="@color/black"/>

</shape>

El resultado es algo como esto:

enter image description here

Como pueden ver, no logro lo que quiero...

preguntado el 22 de mayo de 12 a las 19:05

Es posible que desee configurar el fondo de la ventana en lugar del fondo del diseño. -

Cambié android:background="@drawable/shape" por android:windowbackground="@drawable/shape", error en el código, no está permitido :S: error: No se encontró ningún identificador de recursos para el atributo 'windowbackground' en el paquete 'android' -

Así no se cambia el fondo de la ventana. Si desea hacerlo desde XML, debe definir un tema. De lo contrario, solo haz getWindow().setBackgroundX() -

No entiendo lo que quieres decir, ¿dónde tengo que hacer eso y cómo? -

dialog.getWindow().setBackground...() at showpopup -

1 Respuestas

Intenta usar mi respuesta de aquí: cómo obtener un tema de diálogo redondeado para la actividad (Es lo mismo con lo que estás tratando de hacer). Cree un tema personalizado (haga una referencia a su propia forma dibujable):

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="ThemeWithCorners" parent="android:Theme.Dialog">
        <item name="android:windowBackground">@drawable/another_test_drawable</item>
    </style>


</resources>

(esto será en res/themes.xml). Luego simplemente agregue el tema al constructor del Dialog:

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

contestado el 23 de mayo de 17 a las 11:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.