2012-04-13 4 views
0

Ich möchte eine benutzerdefinierte Ansicht anzeigen, bestehend aus einem TextView über einem ImageView in einem vertikalen LinearLayout, jeweils einzeln in einer Galerie.Android, benutzerdefinierte Ansichten füllen nicht den Bildschirm in einer Galerie

Das Problem ist, dass meine benutzerdefinierte Ansicht den Bildschirm nicht füllt. Ich kann einen Teil der anderen Ansichten auf den Seiten sehen und ich möchte dieses Problem nicht. Hier

ist die xml meiner benutzerdefinierten Ansicht: 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> 

Hier wird der Code der Methode getVew meinen Adapter: 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; 
} 

Ich danke Sie für Ihre Hilfe.

Samuel

Antwort

0

Ich würde empfehlen, dass Sie die ViewPager statt Gallery verwenden. In meiner persönlichen Erfahrung habe ich Gallery leicht buggy gefunden. Wenn Sie nur eine Ansicht gleichzeitig anzeigen möchten, sollte ViewPager (mit dem Sie nach links und rechts wischen können, um einzeln zu wechseln) Ihren Anforderungen entsprechen.

Sie müssen das Android Support-Paket zur Verwendung von ViewPager hinzufügen.

Link-Paket zu unterstützen: http://developer.android.com/sdk/compatibility-library.html -Link auf wie ViewPager verwenden: http://blog.stylingandroid.com/archives/537

+0

Dank für Ihre Hilfe danken. ViewPager ist genau das, was ich will! Das Tutorial funktioniert gut und ist einfach zu bedienen. – Samuel

+0

Gern geschehen. :) – sparkymat

0

sollten Sie sowohl die Breite von Textview und Imageview verwenden fillparent.then es den Bildschirm der Galerie sein wird, füllen ...