GridView lignes qui se chevauchent: comment faire de la hauteur de ligne fit le plus grand élément?

Comme cette personne précédente, j'ai indésirables de chevauchement entre les éléments GridView:

GridView lignes qui se chevauchent: comment faire de la hauteur de ligne fit le plus grand élément?

Avis le texte, dans chaque colonne, à l'exception de la plus à droite.

Où je diffère de celle de la question précédente, c'est que je ne veux pas d'une constante de la hauteur de ligne. Je veux la hauteur de ligne à varier à accueillir le plus grand contenu dans chaque ligne, pour une utilisation efficace de l'espace à l'écran.

À la recherche à la source pour GridView (pas la copie faisant autorité, mais kernel.org est toujours à la baisse), nous pouvons voir dans fillDown() et makeRow() le dernier point de Vue vu est la "vue de référence": la ligne de hauteur est définie à partir de la hauteur de ce point de Vue, pas de la plus haute un. C'est ce qui explique pourquoi la colonne la plus à droite est ok. Malheureusement, GridView n'est pas bon pour moi de résoudre ce problème en héritage. Tous les champs pertinents et les méthodes sont privés.

Donc, avant que je prenne le bien-porte bloaty chemin de "clone et propre", est-il un truc qui me manque ici? Je pourrais utiliser un TableLayout, mais cela m'obligerait à mettre en œuvre numColumns="auto_fit" moi-même (puisque je veux par exemple, juste une longue colonne sur un écran de téléphone), et elle aussi ne serait pas un AdapterView, ce qui se sent comme elle devrait l'être.

Edit: en fait, clone et propre n'est pas pratique ici. GridView dépend des parties inaccessibles de ses parents et de la fratrie des classes, et aurait pour conséquence de l'importation d'au moins 6000 lignes de code (AbsListView, AdapterView, etc.)

InformationsquelleAutor Chris Boyle | 2011-09-25