Android GridLayout API 21
Estoy tratando de lograr algo como esto:
- ¿El comportamiento del resaltado del botón cambió en Froyo?
- Fuente personalizada en Android
- Cómo centrar el icono y el texto en un botón android con el ancho establecido en "fill parent"
- Cómo cambiar el color de fondo de la aplicación de forma permanente
- EditText no llenará el espacio restante
Actualmente, estoy ajustando manualmente el ancho de las fichas igual a la mitad del ancho de la pantalla. Esto funciona bien, pero hace que la adición de divisores entre los azulejos (como se ve en la captura de pantalla) duro. Afortunadamente, parece que en API 21, ahora hay soporte para el peso en GridLayout , citado aquí para su conveniencia:
A partir de la API 21, la distribución de GridLayout de espacio en exceso acopla el principio de peso. En el caso de que no se especifique ningún peso, se respetan las convenciones anteriores y las columnas y filas se consideran flexibles si sus vistas especifican alguna forma de alineación dentro de sus grupos. Por lo tanto, la flexibilidad de una vista es influenciada por su alineación que, a su vez, se define típicamente estableciendo la propiedad de gravedad de los parámetros de disposición del niño. Si se define un peso o una alineación a lo largo de un eje dado entonces el componente se toma como flexible en esa dirección. Si no se estableció peso o alineación, se supone que el componente es inflexible.
Se considera que varios componentes de la misma fila o grupo de columnas actúan en paralelo. Tal grupo es flexible sólo si todos los componentes dentro de él son flexibles. Los grupos de filas y columnas que se sientan a ambos lados de un límite común se consideran en cambio actuar en serie. El grupo compuesto formado por estos dos elementos es flexible si uno de sus elementos es flexible.
Para hacer una columna de estiramiento, asegúrese de que todos los componentes en su interior definir un peso o una gravedad. Para evitar que una columna se estire, asegúrese de que uno de los componentes de la columna no define un peso o una gravedad.
Cuando el principio de flexibilidad no proporciona desambiguación completa, los algoritmos de GridLayout favorecen filas y columnas que están más cerca de sus bordes derecho e inferior. Para ser más preciso, GridLayout trata cada uno de sus parámetros de diseño como una restricción en el conjunto de variables que definen las líneas de cuadrícula a lo largo de un eje dado. Durante el diseño, GridLayout resuelve las restricciones para devolver la solución única a aquellas restricciones para las cuales todas las variables son inferiores o iguales al valor correspondiente en cualquier otra solución válida.
He reunido este simple diseño consistente en un GridLayout con 2 columnas, tratando de lograr dos columnas igual de ancho:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <GridLayout android:layout_width="match_parent" android:layout_height="fill_parent" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:columnCount="2"> <TextView android:layout_width="wrap_content" android:layout_gravity="fill_horizontal" android:text="Hello" android:layout_columnWeight="1" /> <TextView android:layout_width="wrap_content" android:layout_gravity="fill_horizontal" android:text="Hello" android:layout_columnWeight="1" /> <TextView android:layout_width="wrap_content" android:layout_gravity="fill_horizontal" android:text="Hello" android:layout_columnWeight="1" /> <TextView android:layout_width="wrap_content" android:layout_gravity="fill_horizontal" android:text="Hello" android:layout_columnWeight="1" /> <TextView android:layout_width="wrap_content" android:layout_gravity="fill_horizontal" android:text="Hello" android:layout_columnWeight="1" /> </GridLayout> </RelativeLayout>
Pensé que puesto que todos los niños tienen el mismo peso de la columna, daría lugar a columnas igualmente-anchas. Sin embargo, esto no parece ser el caso, ya que esto es lo que resulta:
La primera columna es más estrecha que la segunda columna. ¿Hay algo que me falta aquí? ¿Estoy entendiendo mal cómo funciona el peso con GridLayout?
Como otra pregunta, no puedo hacer el ancho de 0 con truco de peso para asegurar la igualdad de ancho sin importar el contenido (el TextView simplemente desaparece). ¿Cómo puedo lograr esto con GridLayout?
- ¿Cuál es el efecto de mostrar una imagen de alta DPI en una pantalla DPI baja?
- Actualización de GUI: Runnables vs Messages
- Cómo crear GUI en Android en lugar de utilizar XML?
- Quiero hacer menú de diapositivas con efecto 3D como la imagen de abajo
- TextView no se adhiere a la parte superior derecha
- TextView y EditText en una sola fila en Android?
- IU distorsionada con Android
- ¿Es posible mover componentes alrededor de la pantalla usando el apis estándar de Android?
Simplemente añada android:layout_width="0dp"
a cada niño del GridLayout (cualquier niño sin layout_width="0dp"
romperá el diseño del peso).
Asegúrese de que no hay ninguna vista secundaria tiene un tamaño de ancho más grande que el tamaño de ancho promedio si tiene vista de niño con especificar el tamaño de ancho.
Espero que te ayude.
prueba esto, voy a editarlo muy pronto, quiero probar y ver
<GridLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:columnCount="2" > <Button android:layout_column="0" android:layout_gravity="fill" android:layout_row="0" android:layout_columnWeight="1" android:text="c0 | r0" /> <Button android:layout_column="1" android:layout_gravity="fill" android:layout_row="0" android:layout_columnWeight="1" android:text="c1 | r0" /> <Button android:layout_column="1" android:layout_gravity="fill" android:layout_row="3" android:layout_columnWeight="1" android:text="c1 | r3" /> <Button android:layout_column="0" android:layout_gravity="fill" android:layout_row="1" android:layout_columnWeight="1" android:text="c0 | r1" /> </GridLayout>
el texto en los botones explica cómo gridlayout
funciona muy bien, ¿verdad?
Se especifica el número de columnas de una fila y se colocan los widgets en su respectiva posición (número de columna y número de fila) .. colocó las posiciones en el texto para reflejarlo.
en realidad nunca tomó el tiempo con gridlayout
, tuve que jugar con eclipse durante 2 minutos para conseguirlo .. por lo que la columna y la fila .. se puede jugar con ellos en realidad, lo hice y tenía una columna y la otra columna empty.its en mi ejemplo.
Espero eso ayude
- ¿MediaSession y MediaSessionManager tienen compatibilidad con versiones anteriores?
- API de Google Play Services 9.2.0 Selective Compile Awareness