Espacio en blanco al escalar imageview en gridview
Estoy buscando implementar una interfaz de usuario similar a las tarjetas de Google Play.
He creado un GridView y el fondo de la tarjeta como un archivo xml. Ahora, estoy buscando para ajustar imágenes en la tarjeta de modo que la sombra inferior es visible, pero el ancho de la imagen es el mismo que el ancho de la tarjeta. El problema es que hay un espacio en blanco alrededor de la imagen aunque establezca el GridView.LayoutParams proporcional al tamaño de la imagen. Intenté different scaleType pero ninguno funcionó. Además, una vez que obtengo el ancho de la imagen para ajustarse al ancho de la tarjeta, ¿cómo puedo asegurarme de que la sombra del fondo todavía está visible?
- Emoji símbolo 👍 en string.xml bloquea la aplicación
- problema de glowpadview con xml
- Android XmlPullParser UTF-8 problema
- Android.view.inflateexception binario archivo xml línea # 1 error inflar clase android.widget.relativeLayout
- Android R.java no generará en Eclipse
Mi clase de adaptador de imagen
package me.zamaaan.wallpaper; import android.content.Context; import android.util.TypedValue; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.GridView; import android.widget.ImageView; public class ImageAdapter extends BaseAdapter{ private Context mContext; // Keep all Images in array public Integer[] mThumbIds = { R.drawable.background1, R.drawable.background2, R.drawable.background3, R.drawable.background4, R.drawable.background1, R.drawable.background2, R.drawable.background1, R.drawable.background2, R.drawable.background3, R.drawable.background4, R.drawable.background1, R.drawable.background2, R.drawable.background3 }; // Constructor public ImageAdapter(Context c){ mContext = c; } @Override public int getCount() { // TODO Auto-generated method stub return mThumbIds.length; } @Override public Object getItem(int position) { // TODO Auto-generated method stub return mThumbIds[position]; } @Override public long getItemId(int arg0) { // TODO Auto-generated method stub return 0; } @Override public View getView(int position, View convertView, ViewGroup parent) { ImageView imageView = new ImageView(mContext); imageView.setImageResource(mThumbIds[position]); imageView.setScaleType(ImageView.ScaleType.FIT_XY); int width_dp = 109; double height_dp = width_dp/0.5625; int width_px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, width_dp, mContext.getResources().getDisplayMetrics()); int height_px = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, (int)height_dp, mContext.getResources().getDisplayMetrics()); imageView.setLayoutParams(new GridView.LayoutParams(width_px, height_px)); imageView.setBackgroundResource(R.drawable.bg_card); return imageView; } }
Bg_card.xml
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape android:shape="rectangle" android:dither="true"> <corners android:radius="2dp"/> <solid android:color="#ccc" /> </shape> </item> <item android:bottom="2dp"> <shape android:shape="rectangle" android:dither="true"> <corners android:radius="2dp" /> <solid android:color="@android:color/white" /> <padding android:bottom="8dp" android:left="8dp" android:right="8dp" android:top="8dp" /> </shape> </item> </layer-list>
Gridview.xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/landscape" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:background="#eeeeee" android:gravity="center"> <GridView android:id="@+id/grid_view" android:layout_marginTop="16.50dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:layout_width="fill_parent" android:layout_height="fill_parent" android:numColumns="3" android:paddingBottom="8dp" android:horizontalSpacing="11dp" android:verticalSpacing="7dp" android:gravity="center" android:stretchMode="columnWidth" > </GridView> </RelativeLayout>
El tamaño real de las imágenes es
720x1280px
- Flechas personalizadas sin imagen: Android
- Cambiar imagen
- Quiero usar Xpath en Android para analizar XML
- Cambiar entre previsualización de referencia y valor de recursos de cadena en el editor xml
- Error cómico en la declaración de forma xml de Android
- Exhibición de la secuencia de la Cadena de Android Signo de porcentaje
- Android: Pie de página en un ListView
- Dimens.xml en la carpeta de valores de 7 "y 10" tableta, ¿cómo?
Sus imágenes no llenan la tarjeta porque en su fondo de la tarjeta usted tiene un relleno de 8dp en cualquier lado
<?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> ... <item android:bottom="2dp"> <shape android:shape="rectangle" android:dither="true"> <corners android:radius="2dp" /> <solid android:color="@android:color/white" /> <padding android:bottom="8dp" android:left="8dp" android:right="8dp" android:top="8dp" /> </shape> </item> </layer-list>
Retire el relleno para que llene el ancho.
Si desea mantener la sombra también, sería mejor crear un 9-parche para su fondo para que pueda definir dónde se encuentra el contenido, algo así como:
Las líneas negras en la parte izquierda y superior representan las áreas escalables y las líneas en la parte inferior y derecha representan las áreas donde se encuentra el contenido (observe que el área de contenido en el lado derecho no cubre el área de sombra).
- Android: ShareActionProvider sin historial
- Evitar que TextView multilínea se amplíe innecesariamente a su máximo ancho