android: deux questions à l'aide de Tablerow+TextView dans Tablelayout
Je suis en utilisant Tablerow+TextView pour faire un simple point de vue pour les blogs et leurs réponses. Dans chaque TableRow j'ai mis un TextView. Maintenant, j'ai deux questions:
-
Le texte qui est plus long que l'écran ne sera pas automatiquement automatiquement jusqu'à être multi-lignes. Il est par la conception de TableRow? J'ai déjà mis en
tr_content.setSingleLine(false);
[mise à jour] Ce point a été abordé, je pense que je devrais changer Fill_parent être Wrap_content dans textView.tr_author_time.setLayoutParams(new LayoutParams(
LayoutParams.**WRAP_CONTENT**,
LayoutParams.WRAP_CONTENT)); -
La Table ne faites défiler comme ListView. Mes lignes sont plus que la taille de l'écran. J'attends le tableau pourrait être défile vers le bas pour la visualisation comme ListView. Est-ce possible?
Voici mon code:
TableLayout tl = (TableLayout) findViewById(R.id.article_content_table);
TextView tr_title = new TextView(this);
TextView tr_author_time = new TextView(this);
TextView tr_content = new TextView(this);
TableRow tr = new TableRow(this);
for(int i = 0; i < BlogPost.size(); i++){
try{
//add the author, time
tr = new TableRow(this);
/////////////////add author+time row
BlogPost article = mBlogPost.get(i);
tr_author_time = new TextView(this);
tr_author_time.setText(article.author+"("+
article.post_time+")");
tr_author_time.setTextColor(getResources().getColor(R.color.black));
tr_author_time.setGravity(0x03);
tr_author_time.setLayoutParams(new LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
tr.addView(tr_author_time);
tl.addView(tr,new TableLayout.LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
//////////////////////then add content row
tr = new TableRow(this);
tr_content = new TextView(this);
tr_content.setText(article.content);
tr_content.setSingleLine(false);
tr_content.setGravity(0x03);
tr_content.setLayoutParams(new LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
tr.addView(tr_content);
tr.setBackgroundResource(R.color.white);
tl.addView(tr,new TableLayout.LayoutParams(
LayoutParams.FILL_PARENT,
LayoutParams.WRAP_CONTENT));
}
OriginalL'auteur Yang | 2010-04-21
Vous devez vous connecter pour publier un commentaire.
Ce n'est pas vraiment une réponse complète, mais il semble vraiment comme vous êtes en train de faire cela à la dure.
Plutôt que de construire votre TableRows manuellement, vous devez les configurer en xml comme ceci:
tablerow.xml:
Avant votre boucle, obtenir une référence à un LayoutInflater:
Puis, à l'intérieur de la boucle, de créer une instance de tablerow à l'aide de la LayoutInflater:
Cela vous permettra de définir votre mise en page, l'apparence, la mise en page params en xml ce qui rend beaucoup plus facile à lire et à déboguer.
Pour le problème de défilement, vous devez ajouter votre TableLayout à une ScrollView. Quelque chose comme ceci dans votre xml:
Un TableLayout est un descendant de Vue. Il devrait fonctionner très bien. Quelle est l'erreur?
Des œuvres. Oublié d'ajouter des attributs width et height pour le ScrollView. Grâce synic!
pouvez-vous s'il vous plaît modifier tablerow.xml fichier avec le code complet s'il vous plaît. J'obtiens une erreur, et ne sais pas quoi dois-je ajouter de plus dans cette mise en page.
quelque chose est faux! TableRow row = (TableRow)inflater.inflate(R. id.tablerow, tl, false); TableRow row = (TableRow)inflater.inflate(R. layout.tablerow, tl, false); IL EST OK
OriginalL'auteur synic
Plus approprié chose à faire pour les articles pour l'emballage aurait été d'ajouter android:shrinkColumns="*" ou android:shrinkColumns="1" à la TableLayout, ce serait sans doute avoir fixé l'emballage question.
Pour Plus De Détails
Comment peut-on faire deux lignes d'égale Hauteur ? Veuillez voir ma question stackoverflow.com/q/10779802/720176
OriginalL'auteur Sharique Abdullah
Pour placer du texte dans les lignes de la table:
Par défaut, TableLayout lignes en fonction de la largeur de leur contenu, pas de question, il va au-dessus de l'écran de limites. Pour obtenir la plus large que l'écran de texte des cellules de la pellicule pour multi-ligne, l'utilisation
android:shrinkColumns
attribut sur TableLayout.android:shrinkColumns
est l'index de base zéro de l'colonnes à se rétrécir. Il supprime inutilement de l'espace supplémentaire à partir d'une colonne et la réduit :android:shrinkColumns="*"
réduit toutes les colonnesandroid:shrinkColumns="0"
rétrécit première colonneandroid:shrinkColumns="1,2"
rétrécit les deuxième et troisième colonnesandroid:stretchColumns
fait le contraire. Il s'étend sur une colonne du maximum de largeur.À la fois "psy" et "stretch" envisager toutes les lignes du tableau pour calculer l'espace.
Pour faire défiler vers le bas d'un TableLayout:
Si votre
TableLayout
est plus élevé que l'écran, le déplacer dans unScrollView
.OriginalL'auteur John