2015-09-28 2 views
0

У меня есть следующий Gridview внутри макета фрагмента:Пользовательский элемент для Gridview не завышены должным образом

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/gallery" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 

<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/grid_view_photos" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:horizontalSpacing="10dp" 
    android:numColumns="auto_fit" 
    android:stretchMode="columnWidth" 
    android:verticalSpacing="10dp" 
    android:background="@android:color/darker_gray"/> 
</RelativeLayout> 

и это пользовательский элемент сделал для Gridview:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:orientation="horizontal" 
android:padding="5dp"> 

<ImageView 
    gra 
    android:id="@+id/image_view_gallery" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginRight="10dp" 
    android:layout_centerInParent="true"/> 
</RelativeLayout> 

и вот адаптера Метод getView:

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    ImageView imageView; 
    if (convertView == null) { 
     convertView = inflater.inflate(R.layout.item_photos_grid_view, null); 
     imageView = (ImageView) convertView.findViewById(R.id.image_view_gallery); 
     imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 

    } else { 
     imageView = (ImageView) convertView; 
     imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
    } 
    Glide.with(context) // 
      .load(PhotosFragmentConstants.IMAGES[position]) 
      .diskCacheStrategy(DiskCacheStrategy.SOURCE) 
      .crossFade() 
      .centerCrop() 
      .into(imageView); 


    return imageView; 

поэтому изображение должно иметь границу из-за относительной компоновки. Изображение установило границы макета, чтобы создать эффект границы, но он не работает. Когда я запустил приложение, вы можете увидеть только изображение, и за ним нет макета.

Есть ли способ, которым мне нужно сделать элемент для gridview, чтобы он отображал его правильно? Благодарим вас за помощь!

+1

не могли бы вы удалить код в разделе else, а затем проверить ... bcoz ваш конвертированный вид - это элемент сетки, который является relativlayout с изображением. –

ответ

0

Измените код следующим образом:

if (convertView == null) { 
    convertView = inflater.inflate(R.layout.item_photos_grid_view, null); 
} 

ImageView imageView = (ImageView) convertView.findViewById(R.id.image_view_gallery); 
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 

Накачайте раскладку, если она равна нулю, и после этого найти точку нужно. Вы также можете подумать о том, чтобы использовать зритель по соображениям производительности.

+0

Спасибо за ответ! Да, я решил пару минут назад, проблема заключалась в том, что я собирал изображение, а не конвертер. Поэтому я создал viewHolder с изображением внутри, и в конце я вернул convertview не изображение. * И я удалил else * –

Смежные вопросы