Android: Margen mínimo de diálogo
Yo uso android android.app.Dialog
para crear un cuadro de diálogo personalizado (para el botón y el fondo) En mi Diálogo tengo un TextView
dentro de un ScrollView
mientras que tengo un texto corto este show perfecly cómo quiero, pero si el texto es muy grande mi Dialog tomar la pantalla completa y quiero tener un margen mínimo entre el diálogo y el borde de la pantalla.
Mi problema es que quiero que el diálogo no sea más grande que la necesidad y no puedo establecer un tamaño de arreglo en esto?
- Configuración del color de fondo del elemento de diseño de Android
- ¿Es posible refrescar la vista de un Fragmento
- Cómo crear para mi aplicación Android un tutorial para el usuario en la primera instalación
- ListView onClickListener () no funciona después de agregar RadioButton
- Insignia de notificación de ConstraintLayout
Here is how this look today.....I what a margin like this
El GameDialog.java
public class GameDialog extends Dialog { public GameDialog(Context ct, int titleID, int messageID) { super(ct, R.style.dialog_style); this.setContentView(R.layout.dialog_layout); } // This exist more code but this has noting with the layout to do,only set the text and show the button that exist since the XML file. }
El estilo de R.style.dialog_style
<style name="dialog_style" parent="@android:style/Theme.Dialog"> <item name="android:windowBackground">?button_image</item> <item name="android:windowNoTitle">true</item> <item name="android:textColor">#FF000000</item> <item name="android:textSize">20sp</item> </style>
El R.layout.dialog_layout
<?xml version="1.0" encoding="utf-8"?> <!-- Dialog layout that show title and a textarea, and under this allow a row of button that is center layout. --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content"> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="14px" android:layout_marginRight="14px"> <TextView android:layout_gravity="center_vertical" android:id="@+id/text_title" android:layout_width="fill_parent" android:layout_height="wrap_content"> </TextView> </LinearLayout> <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="0px" android:layout_weight="1" android:layout_marginLeft="14px" android:layout_marginRight="14px"> <ScrollView android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/text_main" android:padding="5px" android:layout_width="fill_parent" android:layout_height="wrap_content" > </TextView> </ScrollView> </LinearLayout> <LinearLayout android:id="@+id/layout_button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:orientation="horizontal"> <!-- this will be show while need to show a button --> <ImageView style="?icon_size.button" android:visibility="gone"/> <ImageView style="?icon_size.button" android:visibility="gone"/> <ImageView style="?icon_size.button" android:visibility="gone"/> <ImageView style="?icon_size.button" android:visibility="gone"/> <ImageView style="?icon_size.button" android:visibility="gone"/> </LinearLayout> </LinearLayout>
- Después de girar una línea lineal, los eventos onclick no cambian de posición después de la rotación
- Llamar TextView.setText () vuelve a dibujar toda la pantalla a pesar de la jerarquía de vista
- Error de StackOverflow Android / Eclipse
- ¿Por qué mi interfaz de usuario de Android actúa como falsa cuando intento seleccionar texto?
- Fragmento de NavigationDrawer con ListView y encabezado personalizado
- El diseño aparece diferente en la disposición gráfica y en el dispositivo real
- Agregar vistas de forma programática en un diseño (lineal) (que está dentro de un ScrollView)
- Barra de herramientas "Oculto" visible debajo de la barra de estado
El marco realmente lo hace en las imágenes de fondo por sí mismos. En otras palabras, si echa un vistazo al tema definido para el marco, su atributo windowBackground
es sólo un color claro, es decir:
<item name="android:windowBackground">@android:color/transparent</item>
Y entonces la imagen de fondo colocada en el elemento de diseño de raíz es un parche de 9 que tiene relleno incorporado alrededor de todos los lados (es decir, un espacio extra incorporado en la imagen de modo que cuando la imagen se estira para llenar la pantalla que todavía se puede ver alrededor de los bordes) . Echa un vistazo a uno de los paneles de la fuente AOSP para tener una idea de lo que quiero decir ( enlace ).
Así que para su solución me gustaría recomendar dos cosas:
- Modifique su estilo personalizado con
windowBackground
como he descrito anteriormente - Actualice su imagen de fondo personalizada para incluir ese margen transparente inherente
Para el Paso 2, si su imagen es actualmente un 9-patch, haga lo mismo que Google hizo. Si creó la imagen en XML, puede utilizar una <layer-list>
como el ejemplo siguiente para incrustar el rectángulo visible dentro de otro con relleno:
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <shape android:shape="rectangle" > <solid android:color="@android:color/transparent" /> <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" /> </shape> </item> <!-- This shape will be inset by the padding set above --> <item> <shape android:shape="rectangle" > <solid android:color="#262626" /> </shape> </item> </layer-list>
El relleno no se transfiere al contenido en este caso, por lo que también tendrá que agregar relleno a su elemento de diseño raíz para que coincida con los límites de contenido con la visualización de la imagen.
Simplemente agregue los márgenes de diseño al grupo de vista superior (su LinearLayout).
Además, tiene muchos diseños anidados innecesarios y no debe utilizar unidades de píxeles. Tu dialog_layout.xml debería tener el siguiente aspecto:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="14dp" > <TextView android:id="@+id/text_title" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingRight="14dp" android:paddingLeft="14dp" /> <ScrollView android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingRight="14dp" android:paddingLeft="14dp"> <TextView android:id="@+id/text_main" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </ScrollView> <LinearLayout android:id="@+id/layout_button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:orientation="horizontal"> <!-- this will be show while need to show a button --> <ImageView style="?icon_size.button" android:visibility="gone"/> <ImageView style="?icon_size.button" android:visibility="gone"/> <ImageView style="?icon_size.button" android:visibility="gone"/> <ImageView style="?icon_size.button" android:visibility="gone"/> <ImageView style="?icon_size.button" android:visibility="gone"/> </LinearLayout> </LinearLayout>
- No se puede crear la aplicación de reactivo nativo en el dispositivo Android: no se pudo encontrar el destino con la cadena de hash 'android-23'
- Android RecyclerView último elemento eliminar (tiempo de ejecución) error