android - samsung - mi celular dice memoria llena y esta vacia
Imperfección GridView de Android, cómo eliminar espacio en blanco adicional a la derecha (5)
Tengo un calendario basado en GridView. Tengo el siguiente diseño XML con el selector establecido en nulo, así android:listSelector="@null"
de acuerdo con los consejos que he recibido de este sitio. Ahora estoy obteniendo unos pocos píxeles de ancho a la derecha de GridView. ¿Por qué? He intentado todo lo que puedo pero aprovechar. Aquí está mi diseño XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<GridView
android:id="@+id/calendar"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:horizontalSpacing="-1px"
android:numColumns="7"
android:stretchMode="columnWidth"
android:gravity="center"
android:verticalSpacing="-1px"
android:listSelector="@null" >
</GridView>
</LinearLayout>
Lo que obtengo es esta imagen:
Intenta usar
android:layout_margin="0dp"
android:padding="0dp"
También es posible que tenga ese espacio asignado para la barra de desplazamiento.
¿Y por qué tienes tu espacio vertical y horizontal con valores negativos?
Tuve el mismo problema, aunque en mi caso no tenía control sobre la instancia de GridView
, así que no pude leer el ancho de la columna. Sin embargo, podría subclasificar su contenedor.
Esto no es muy ortodoxo, pero puede anular el método onMeasure
y agregar algunos píxeles.
Algo como esto:
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
final int RIGHT_MARGIN_OVERSIZE_DIP = 6;
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int width = this.getMeasuredWidth()
int overSize = (int)((getResources().getDisplayMetrics().density*RIGHT_MARGIN_OVERSIZE_DIP) + 0.5f);
widthMeasureSpec = MeasureSpec.makeMeasureSpec(width + overSize, MeasureSpec.getMode(widthMeasureSpec));
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
en mi caso tuve espaciado horizontal como 1dp
android:horizontalSpacing="1dp"
entonces, para resolver esto, puse el relleno correcto como -1dp
android:paddingRight="-1dp"
a pesar de que esperaba obtener un espacio en el lado izquierdo debido a esto, pero funcionó correctamente
grid.setColumnWidth(grid.getColumnWidth()+1);
Esto obtendrá el ColumnWidth actual y le agregará 1 píxel. Recuerde usar esto después de onCreateView, ya que la grilla necesita ser inicializada antes de eso.
Además, su vista de cuadrícula debe usar match_parent (alto y ancho). La imagen / diseño en la columna también debe ser match_parent.
Este espacio se debe a un cálculo imperfecto para cada fila de su grilla. Por ejemplo, el ancho de su dispositivo es de 320 px y tiene 7 filas, pruebe cualquier cálculo que cumpla con 320 px. Si el ancho de cada celda es 45.71428571428571 px, solo entonces se puede reducir.
Otra opción
aplicar la propiedad android: gravity = "center" en tu cuadrícula para que los espacios se dividan por igual de izquierda a derecha