2016-03-23 11 views
2

Ich möchte 3 TextViews in einer Ansicht haben. Die TextViews muss nacheinander horizontal um beispielsweise 10 dp Rand getrennt werden. Angenommen, ein Inhalt von TextView überschreitet eine Zeile, der verbleibende Inhalt zusammen mit dem verbleibenden TextViews sollte wie bei Verwendung von wrap_content in die nächste Zeile verschoben werden. Ich möchte nicht, dass TextViews den gleichen Platz einnimmt. Es sollte Platz nur nach seinem Inhalt belegenHinzufügen von TextViews durch Leerzeichen getrennt

+6

Was fragen Sie genau? –

+1

getrennt durch Komma bedeutet? –

+2

Was hast du probiert? – Sree

Antwort

3

Ich denke, Sie wollen FlowLayout? FlowLayout:

Erweitertes lineares Layout, das seinen Inhalt umschließt, wenn in der aktuellen Zeile kein Platz mehr vorhanden ist.

es als Abhängigkeit in Gradle hinzufügen als: compile 'org.apmem.tools:layouts:[email protected]' und erklärt in xml:

<org.apmem.tools.layouts.FlowLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:orientation="horizontal" 
> 
</org.apmem.tools.layouts.FlowLayout> 
+1

So gibt es keine andere einfache Möglichkeit, dies zu tun, außer Dinge mit Bibliotheken zu verkomplizieren ?? – Jas

+0

@Jas AFAIK, es gibt keinen Weg. Sie können versuchen, Ihre eigene 'Custom ViewGroup' zu erstellen, aber ich denke, dass es komplizierter ist. Mit dem obigen 'FlowLayout' können Sie einfach Ihre Ansicht als' LinearLayout' hinzufügen, das ist alles. –

1

Ich schlage vor, einen String-Builder mit 1 Textansicht anstelle von 3 Textansichten verwenden - es wird mehr straigthforward sein, weniger Views (weniger teuer) und einfacher zu pflegen

Edit: Wenn Sie später Teile dieses Textview zugreifen müssen, können Sie Teile des Textview Text in String-Felder speichern. Auf diese Weise ist Ihre Ansichtshierarchie einfach und Sie können immer noch auf die Textpartikel zugreifen.

Pseudo-Code Beispiel: string1 = "Kartoffeln"; string2 = "sind besser als"; string3 = "Gurken"; textview.setText (Zeichenfolge1 + Zeichenfolge2 + Zeichenfolge3);

+0

Ich weiß. Das wird einfach sein. Aber ich möchte die Daten aus diesen 3 TextViews später separat holen. Deshalb – Jas

+0

@Jas können Sie es teilen und Zeichenfolge erhalten –

+0

Das wäre kompliziert. Wenn ich 3 TextViews verwende, könnte ich den Text einfach mit getText() gelesen haben – Jas

0

Verwenden weightSum für Linearlayout

<LinearLayout 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:weightSum="3" 
android:orientation="horizontal" 
> 

Sie die layout_weight jeden Textview 1 und die weightSum in Linearlayout bis 3, dies zu erreichen setzen.

<TextView 
android:layout_height="wrap_content"  
android:layout_weight="1" 
android:layout_width="0dp"/> 

Offizielle Führer - http://developer.android.com/reference/android/widget/LinearLayout.html#attr_android:weightSum

andere Tutorial - http://androidtuts.weebly.com/xml-layout-weightsum-weight.html

Update:

Wenn Sie Raum zwischen 3 Textviews hinzufügen "Space" Ansicht. & Gewicht einstellen, wie Sie benötigt haben.

oder benutzen Rand nach links oder rechts