¿Cómo cambio la forma de un diálogo?
Frecuentes
Visto 7,569 veces
0
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:
Como pueden ver, no logro lo que quiero...
1 Respuestas
7
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 android background dialog or haz tu propia pregunta.
Es posible que desee configurar el fondo de la ventana en lugar del fondo del diseño. - K-ballo
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' - Xavi Garcia Vazquez
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()
- K-balloNo entiendo lo que quieres decir, ¿dónde tengo que hacer eso y cómo? - Xavi Garcia Vazquez
dialog.getWindow().setBackground...()
atshowpopup
- K-ballo