Définir la hauteur de ligne GridView fixe
Je vais avoir toutes sortes de problèmes avec des hauteurs de ligne dans GridView.
Je voudrais configurer la taille des éléments (hauteur/largeur) en XML et puis juste avoir le contrôle GridView ajuster autant que possible avec les sans étirement. Si elle ne peut pas tenir l'élément suivant il devrait ajouter rembourrage autour de l'actuelle nombre d'éléments qu'il a été en mesure de s'adapter.
Actuellement je reçois les 2 colonnes (qui me semble de taille fixe) et les lignes être étirée. Quelqu'un pourrait-il aider s'il vous plaît expliquer ce qui se passe et comment obtenir ce que je veux?
GridView:
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/main_grid"
android:numColumns="auto_fit"
android:gravity="center"
android:paddingRight="20dp"
android:paddingLeft="20dp"
android:clipToPadding="true"
android:fitsSystemWindows="true"
android:stretchMode="none"
android:background="@drawable/main_grid_background">
</GridView>
GridItem (je veux qu'il 320x320 que plus tard, j'ai insérer une image de fond dans ce qui semble étrange, si ce n'est pas un carré parfait).
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="320dp"
android:layout_height="320dp"
android:padding="10dp" >
<TextView
android:id="@+id/grid_item_label"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:singleLine="true"
android:text="@+id/label"
android:layout_marginTop="5dp"
android:textColor="@color/black"
android:textSize="15sp"
android:visibility="invisible"
android:layout_centerInParent="true" >
</TextView>
</RelativeLayout>
Java:
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View gridView;
if (convertView == null) {
gridView = new View(context);
//get layout from mobile.xml
gridView = inflater.inflate(R.layout.main_grid_item, null);
} else {
gridView = (View) convertView;
}
TextView textView = (TextView) gridView
.findViewById(R.id.grid_item_label);
//SET TEXT AND BACKGROUND IMAGE HERE
//gridView.setBackgroundResource(R.drawable.main_grid_item_import);
return gridView;
}
source d'informationauteur AlexIIP
Vous devez vous connecter pour publier un commentaire.
Dans le CustomAdapter
rowHigh est la dimension que vous devez modifier
En XML:
Donc, ce n'est pas une réponse parfaite, mais c'est la façon dont je l'ai eu à travailler. Des idées empruntées cette fil.
Tout ceci fonctionne en supposant que je sais que mon image de la taille de 320x320. Aussi, dans GridView j'ai dû mettre
android:columnWidth="320dp"
ou cela ne fonctionnerait pas. Si quelqu'un a une meilleure idée, s'il vous plaît poster... pour l'instant je suis en mouvement.Grille de l'Élément XML:
GridView XML: