android: zwei Probleme mit Tablearow + TextView im Table-Layout

8

Ich verwende Tablerow + TextView, um eine einfache Ansicht für Blogposts und ihre Antworten zu erstellen. In jeder TableRow habe ich eine TextView eingefügt. Jetzt habe ich zwei Probleme:

  1. Der Text, der länger als der Bildschirm ist, wird nicht automatisch als mehrzeilig dargestellt. Ist es von Design von TableRow? Ich habe bereits tr_content.setSingleLine(false); [update] eingestellt Dies wurde angesprochen, ich denke, ich sollte Fill_parent in Wrap_content in textView ändern.% Co_de%

  2. Die Tabelle scrollt nicht wie ListView. Meine Zeilen sind größer als die Bildschirmgröße. Ich gehe davon aus, dass die Tabelle genau wie ListView zur Ansicht gescrollt werden kann. Ist das möglich?

Hier ist mein Code:

%Vor%     
Yang 21.04.2010, 16:34
quelle

3 Antworten

13

Das ist nicht wirklich eine vollständige Antwort, aber es scheint wirklich, als ob du das auf die harte Tour machst.

Anstatt Ihre TableRows manuell zu erstellen, sollten Sie sie wie folgt in XML einrichten:

tablearw.xml:

%Vor%

Beziehen Sie sich vor Ihrer Schleife auf einen LayoutInflater:

%Vor%

Erstellen Sie dann innerhalb Ihrer Schleife eine Instanz von tabrowrow mit dem LayoutInflater:

%Vor%

Damit können Sie Layout, Aussehen und Layoutparameter in XML einstellen, was das Lesen und Debuggen wesentlich erleichtert.

Für das Scroll-Problem müssen Sie Ihr TableLayout zu einer ScrollView hinzufügen. So etwas in deinem xml:

%Vor%     
synic 21.04.2010, 17:26
quelle
16

Eine sinnvollere Sache für das Umhüllen von Gegenständen wäre das Hinzufügen von android: shrinkColumns="*" oder android: shrinkColumns="1" zum TableLayout gewesen, dies hätte das Umbruchproblem wahrscheinlich behoben.

Details

    
Sharique Abdullah 12.09.2011 13:30
quelle
6

Um Text in Tabellenzeilen einzufügen:

Standardmäßig passen TableLayout-Zeilen an die Breite ihres Inhalts an, unabhängig davon, ob sie über die Bildschirmgrenzen hinausgeht. Verwenden Sie das android:shrinkColumns -Attribut für TableLayout, um die Textzellen, die breiter als der Bildschirm sind, in mehrzeilige Zeilen umzuwandeln.

%Vor%

android:shrinkColumns ist ein auf Null basierender Index der Spalten, die verkleinert werden sollen . Es entfernt unnötigen zusätzlichen Speicherplatz aus einer Spalte und verkleinert es:

  • android:shrinkColumns="*" verkleinert alle Spalten
  • android:shrinkColumns="0" verkleinert die erste Spalte
  • android:shrinkColumns="1,2" verkleinert die zweite und dritte Spalte

android:stretchColumns macht das Gegenteil. Es streckt eine Spalte auf die maximal verfügbare Breite.

Sowohl "shrink" als auch "stretch" berücksichtigen alle Zeilen der Tabelle, um Speicherplatz zu berechnen.

Um ein TableLayout nach unten zu scrollen:

Wenn dein TableLayout höher als der Bildschirm ist, verschiebe es in ein ScrollView .

    
John 07.01.2014 15:27
quelle