GridView hauteur de la ligne ne comporte pas correctement
Je suis à l'aide d'un GridView qui montre un linearlayout avec une image de fond plus un texte, comme dans cet exemple:
http://www.curious-creature.org/2012/12/11/android-recipe-1-image-with-rounded-corners/
Et comme cet exemple, j'utilise ce code pour rendre les images ont des coins arrondis.
Le problème est que si je n'utilise pas les coins ronds truc, tous mes éléments de la grille sont de la même hauteur, peu importe ce que le texte qu'ils ont à l'intérieur, même si toutes mes images sont de la même taille.
Mais si je l'utilise, les éléments de la hauteur est enroulé sur le contenu.
J'ai essayé de définir ma linéaire de la mise en page à wrap_content, fill_parent, match_parent et même des hauteurs fixes, mais le système m'ignore.
C'est ma grille de mise en page:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/LinearLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFDDDDDD"
android:orientation="vertical"
tools:context=".RouteListActivity" >
<GridView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_margin="20dp"
android:layout_weight="2"
android:animateLayoutChanges="false"
android:clipChildren="false"
android:clipToPadding="false"
android:drawSelectorOnTop="true"
android:gravity="center"
android:horizontalSpacing="10dp"
android:numColumns="2"
android:scrollingCache="false"
android:stretchMode="columnWidth"
android:verticalSpacing="10dp" />
</LinearLayout>
Et c'est mon élément:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/linearlayoutGridLabel"
android:layout_width="wrap_content"
android:layout_height="150dp"
android:layout_weight="1"
android:gravity="bottom|left"
android:orientation="vertical" >
<TextView
android:id="@+id/id_ruta"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:visibility="gone" />
<TextView
android:id="@+id/routenameGridLabel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:background="#77000000"
android:gravity="bottom"
android:padding="5dp"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
</LinearLayout>
En Plus de ma getView dans la Carte:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
if(convertView==null)
vi = inflater.inflate(R.layout.grid_item, null);
LinearLayout linLayout = (LinearLayout) vi.findViewById(R.id.linearlayoutGridLabel);
Typeface yanone = Typeface.createFromAsset(mContext.getAssets(), "YanoneKaffeesatz-Regular.ttf");
TextView id_ruta = (TextView) vi.findViewById(R.id.id_ruta);
TextView nombre=(TextView)vi.findViewById(R.id.routenameGridLabel);
nombre.setTypeface(yanone);
nombre.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 38);
Ruta current = routeList.get(position);
try {
// Drawable d;
// d = Drawable.createFromStream(mContext.getAssets().open("ruta" + (position+1) + "/title.jpg"), null);
Bitmap b = BitmapFactory.decodeStream(mContext.getAssets().open("ruta" + (position+1) + "/title.jpg"));
StreamDrawable d = new StreamDrawable(b, 10, 0);
linLayout.setBackgroundDrawable(d);
} catch (IOException e) {
linLayout.setBackgroundResource(R.drawable.noimage);
}
nombre.setText("" + current.getNombre());
id_ruta.setText(current.getId().toString());
return vi;
}
Franchement, je ne comprends pas gridviews comportement. Auparavant j'ai eu différentes tailles d'images définir comme images d'arrière-plan, et tous les éléments se chevauchent les uns les autres. Je n'arrivais pas à faire les lignes de la même taille, même lors de la fixation de la hauteur de la grille de l'article " mise en page.
Puis-je obtenir certaines directions, ici, s'il vous plaît?
OriginalL'auteur Gabriel Sanmartin | 2012-12-30
Vous devez vous connecter pour publier un commentaire.
J'ai enfin résolu, s'avère le problème était que j'ai été en utilisant
au lieu de
afin de paramètres de mise en page ont été ignorés.
De toute façon, se GridView pour distribuer uniformément l'espace est une douleur dans le cul. Je pense que je vais passer à TableView.
Ohhh MG..vous avez sauvé ma 3 h 33 min et 42 secondes.. Merci 😀
OriginalL'auteur Gabriel Sanmartin