GridView avec différentes tailles de colonne
Essayer de faire une liste de score, qui est scrollable, et ressemble à ceci:
foo 1000
bar 876
foobar 500
foobarfoo 1
Je suis actuellement en train de le faire avec un GridView. Je voudrais mettre le nom de la colonne de largeur jusqu'à 60% de l'écran et le score de la largeur de la colonne à 40%. Est-il possible?
Actuellement, je suis en train par l'intermédiaire d'un costum de l'adaptateur. Voici la getview fonction:
public View getView(int position, View convertView, ViewGroup parent) {
TextView tv;
if (convertView == null) {
tv = new TextView(context);
tv.setTextSize(25);
tv.setTextColor(Color.WHITE);
if (position % 2 == 0)
{
tv.setLayoutParams(new GridView.LayoutParams((width/10)*6, 50));
}
else
{
tv.setLayoutParams(new GridView.LayoutParams((width/10)*4, 50));
}
}
else {
tv = (TextView) convertView;
}
tv.setText(texts[position]);
return tv;
}
La mise en page est construite par le gridview et un bouton en bas de page. Le fichier XML est:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" android:orientation="vertical" android:id="@+id/top">
<GridView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="2"
android:id="@+id/grid"
android:numColumns="2"
android:columnWidth="0dp"
>
</GridView>
<Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/backbutton" android:text="@string/backstr"></Button>
</LinearLayout>
Donc de nouveau la question: Est-il possible de définir le GridView pour laisser l'ajout de différentes tailles de colonnes? Si oui, alors ma démarche est la bonne? (Probablement pas, car il ne fonctionne pas :)) ai-je raté quelque chose?
Vous en remercie d'avance!
C'est malheureusement ce n'est pas une valeur valide pour le columnwidth. Mais merci pour le commentaire!
Dans ce cas, vous pourriez utiliser une liste au lieu de GridView, et pour chaque ligne, utilisez une mise en page avec le texte de deux opinions (LinearLayout de préférence) qui vous renseignent dans la méthode getView de votre adaptateur.
Et avec cette méthode est la liste déroulante?
Oui, ListViews sont défilement 🙂
OriginalL'auteur Szellszi | 2011-07-11
Vous devez vous connecter pour publier un commentaire.
Nous avons dû le faire pour un projet, et ne voulez pas utiliser autre chose qu'un
GridView
parce que la fonctionnalité a été répétée, mais sur unGridView
nous avons besoin d'un point de vue légèrement différent de configuration (mais toujours à l'aide d'une carte et toutes les autres bonnes choses). Nous avons constaté que vous POUVEZ le faire si vous remplacezGridView
'slayoutChildren
fonction, même si c'est assez mal documenté.Mise en œuvre, une case à cocher pour un affichage spécial et si la nouvelle disposition a déjà été mis en œuvre:
Cette solution est juste pour faire de la GridView faire quelque chose de différent de ce qu'il pourrait faire normalement, mais encore de le nourrir avec des informations à partir d'un Adaptateur. Il pourrait être plus facile de faire ce que vous essayez de le faire avec une présentation différente de l'objet, comme un LinearLayout. Cela dit, nous n'avons utiliser ce code pour mettre en œuvre une mesure de la taille d'une cellule au sein d'un GridView, donc si c'est le genre de chose que vous devez faire, c'est un itinéraire que vous pouvez prendre.
OriginalL'auteur Steve
De travail comme un charme! Un grand merci à Abhinav, qui a fait un bon conseiller. Voici le code pour tout le monde qui a le même problème:
Et le fichier XML:
Si vous pensez que vous pouvez améliorer ce code (puisque je suis un newbie dans ce domaine) n'hésitez pas, pour vous répondre! Merci à l'avance!
OriginalL'auteur Szellszi