Android, пользовательские представления не заполняют экран в галерее

Я хочу отобразить пользовательское представление, состоящее из TextView над ImageView в вертикальном LinearLayout, по одному в галерее.

Проблема в том, что мой пользовательский вид не заполняет весь экран. Я вижу часть других представлений по бокам, и мне не нужна эта проблема.

Вот XML моего пользовательского представления: gallery_item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/gallery_item_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
>
    <TextView
        android:id="@+id/gallery_item_cardname"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="20dp"
        android:textStyle="bold"
        android:text="@string/contrebandiers_lvl1"
        android:textColor="@android:color/darker_gray"
    />
    <ImageView
        android:id="@+id/gallery_item_cardimg"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerInside"
        android:contentDescription="@string/app_name"
        android:src="@drawable/contrebandiers_lvl1"
    />
</LinearLayout>

Вот код метода getVew моего адаптера: GTRoundDeckAdapter

public View getView(int position, View convertView, ViewGroup parent)
{
    GalleryItem galleryItem;

    if(convertView == null)
    {
        galleryItem = new GalleryItem();
        convertView = mInflater.inflate(R.layout.gallery_item, null);
        galleryItem.cardName = (TextView) convertView.findViewById(R.id.gallery_item_cardname);
        galleryItem.cardImg = (ImageView) convertView.findViewById(R.id.gallery_item_cardimg);
        convertView.setTag(galleryItem);
    }
    else
    {
        galleryItem = (GalleryItem) convertView.getTag();
    }

    GTCard gtCard = (GTCard) mRoundDeck.get(position);
    galleryItem.cardName.setText(gtCard.getNameId());
    galleryItem.cardImg.setImageResource(gtCard.getImgId());

    return convertView;
}

Я благодарю вас за вашу помощь.

Самуэль


person Samuel    schedule 13.04.2012    source источник


Ответы (2)


Я бы порекомендовал вам использовать ViewPager вместо Gallery. По моему личному опыту, Галерея немного глючит. Если вам требуется отображать только одно представление за раз, тогда ViewPager (который позволяет вам проводить пальцем влево и вправо, чтобы переходить по одному) должен удовлетворить ваши потребности.

Вам нужно будет включить пакет поддержки Android, чтобы использовать ViewPager.

Ссылка на пакет поддержки: http://developer.android.com/sdk/compatibility-library.html Ссылка на то, как использовать ViewPager: http://blog.stylingandroid.com/archives/537

person sparkymat    schedule 13.04.2012
comment
Спасибо за помощь. ViewPager - это именно то, что я хочу! Учебник отлично работает и прост в использовании. - person Samuel; 16.04.2012

вы должны использовать как ширину textview, так и imageview fillparent. Затем он будет заполнять экран галереи...

person Nitesh Khosla    schedule 13.04.2012