Ich habe eine Horizontale LinearLayout
mit einem TextView
gefolgt von einem Spinner
daneben. Dies LinearLayout
wird in einer festen Vertikalen, LinearLayout
die in a enthalten ist, mehrmals dynamisch aufgeblasenRelativeLayout
.
Das Problem ist, dass seit ich von Theme.light
zu gewechselt bin Theme.holo.light
, die letzte Zeile von TextView
halbiert wird. Dies geschieht, wenn der dynamische Text lang ist und mehr als eine Zeile umfasst.
Ich konnte dies beheben, indem ich der Horizontalen, LinearLayout
die das TextView
und enthielten, eine untere Polsterung hinzufügteSpinner
.
Dies fühlt sich nicht wie eine Lösung an, sondern eher wie ein Hack. Kann mir bitte jemand einen Rat geben, wie man das richtig behebt?
Ich habe auch einige andere Fragen gelesen, aber keine scheint zu helfen.
Horizontales lineares Layout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/textView1"
android:layout_width="150dp"
android:layout_height="wrap_content"
android:layout_marginRight="20dp"
android:text="TextView"/>
<Spinner
android:id="@+id/spinner1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
Relatives Layout, bei dem das obige Layout bei linearem Layout mit der ID ll2_7 dynamisch aufgeblasen wird:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<ScrollView
android:id="@+id/scrollView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/relLayoutButtonNext"
android:layout_below="@id/textView1" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="20dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="10dp" >
<TextView
android:id="@+id/textView10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="30dp"
android:text="2.7" />
<TextView
android:id="@+id/textView11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_toRightOf="@id/textView10"
android:text="@string/question2_7" />
<LinearLayout
android:id="@+id/ll2_7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView11"
android:layout_below="@+id/textView11"
android:orientation="vertical" android:layout_marginBottom="20dp">
</LinearLayout>
</RelativeLayout>
</ScrollView>
</RelativeLayout>
EDIT: Hier ist die komplette Layout-XML für oben:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView
android:id="@+id/textView1"
style="@style/question_section_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="@string/question2_header" />
<RelativeLayout
android:id="@+id/relLayoutButtonNext"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@color/bottomBar"
android:paddingBottom="3dp"
android:paddingLeft="50dp"
android:paddingRight="50dp"
android:paddingTop="3dp" >
<Button
android:id="@+id/buttonNext"
android:layout_width="180dp"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:onClick="nextStep"
android:text="Next Section"
android:textSize="20sp" />
<Button
android:id="@+id/buttonPrevious"
android:layout_width="180dp"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:onClick="previousStep"
android:text="Previous Section"
android:textSize="20sp" />
</RelativeLayout>
<ScrollView
android:id="@+id/scrollView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_above="@+id/relLayoutButtonNext"
android:layout_below="@id/textView1" >
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingBottom="20dp"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:paddingTop="10dp" >
<TextView
android:id="@+id/textView10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingRight="30dp"
android:text="2.7" />
<TextView
android:id="@+id/textView11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_toRightOf="@id/textView10"
android:text="@string/question2_7" />
<LinearLayout
android:id="@+id/ll2_7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView11"
android:layout_below="@+id/textView11"
android:orientation="vertical" android:layout_marginBottom="20dp">
</LinearLayout>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView10"
android:layout_below="@+id/ll2_7"
android:text="2.8" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/ll2_7"
android:layout_toRightOf="@+id/textView10"
android:text="@string/question2_8" android:layout_marginBottom="10dp"/>
<LinearLayout
android:id="@+id/ll2_8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView3"
android:layout_below="@+id/textView3"
android:layout_marginBottom="20dp"
android:orientation="vertical" >
</LinearLayout>
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView2"
android:layout_below="@+id/ll2_8"
android:text="2.9" />
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/ll2_8"
android:layout_toRightOf="@+id/textView10"
android:text="@string/question2_9" android:layout_marginBottom="10dp"/>
<LinearLayout
android:id="@+id/ll2_9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView5"
android:layout_toRightOf="@+id/textView10"
android:orientation="vertical" android:layout_marginBottom="20dp">
</LinearLayout>
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView4"
android:layout_below="@+id/ll2_9"
android:text="2.10" />
<TextView
android:id="@+id/textView7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/ll2_9"
android:layout_toRightOf="@+id/textView10"
android:text="@string/question2_10" android:layout_marginBottom="10dp"/>
<LinearLayout
android:id="@+id/ll2_10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView7"
android:layout_marginBottom="20dp"
android:layout_toRightOf="@+id/textView10"
android:orientation="vertical" >
</LinearLayout>
<TextView
android:id="@+id/textView8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView6"
android:layout_below="@+id/ll2_10"
android:text="2.11" />
<TextView
android:id="@+id/textView9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/ll2_10"
android:layout_toRightOf="@+id/textView10"
android:text="@string/quesiton2_11" android:layout_marginBottom="10dp"/>
<LinearLayout
android:id="@+id/ll2_11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView9"
android:layout_below="@+id/textView9"
android:orientation="vertical" android:layout_marginBottom="20dp">
</LinearLayout>
<TextView
android:id="@+id/textView12"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView8"
android:layout_below="@+id/ll2_11"
android:text="2.11.1" />
<TextView
android:id="@+id/textView13"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/ll2_11"
android:layout_toRightOf="@+id/textView10"
android:text="@string/question2_11_1" android:layout_marginBottom="10dp"/>
<LinearLayout
android:id="@+id/ll2_11_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView13"
android:layout_toRightOf="@+id/textView10"
android:orientation="vertical" android:layout_marginBottom="20dp">
</LinearLayout>
</RelativeLayout>
</ScrollView>
</RelativeLayout>
quelle
Antworten:
Ich habe das gleiche Cut-Off-Problem festgestellt, wie im Screenshot gezeigt. Dies wird durch die Ausrichtung der Grundlinie in der Horizontalen verursacht
LinearLayout
.TextView
undSpinner
haben unterschiedliche Grundlinien aufgrund von Unterschieden in der Schriftgröße. Um das Problem zu beheben, müssen Sie die Grundlinienausrichtung für das Layout deaktivieren, indem Sie Folgendes einstellen:oder im Code:
quelle
Nachdem ich eine Million verschiedene Dinge ausprobiert habe, denke ich, dass ich die Antwort habe.
Ich habe a
LayoutGravity
auf das TextView-Element angewendet:Scheint alle Clipping-Probleme zu lösen, die ich hatte. Hoffe das hilft jemandem mit dem gleichen Problem.
quelle
@android:style/Widget.TextView
und die folgenden Zeilen hinzufügt:<item name="android:gravity">fill</item>
<item name="android:padding">1sp</item>
android:baselineAligned="false"
zu IhremLinearLayout
Ich hatte das gleiche Problem und fand das einfach hinzufügen
In der letzten Textzeile wurden die Nachkommen nicht mehr abgeschnitten.
quelle
Ich habe nach dem Text durch Hinzufügen etwas Dummy-Leerzeichen hinzugefügt
Ich habe alle anderen Lösungen ausprobiert. Aber dies war die einzige Lösung, die für mich funktioniert hat
quelle
Fügen Sie die problematische Textansicht in ein Framelayout ein. Ich denke, die Textansicht ist aufgrund der Geschwisteransicht Spinner nicht korrekt berechnet.
quelle
CheckBox
in gleichLinearLayout
. Dies löste das Problem.In diesem Fall sollten Sie sicherstellen, dass die
TextView
Behälter nicht größer als der Behälter wird.Wenn a auf gesetzt
TextView
istwrap_content
und der Container (oder ein Ahnencontainer) keinen Platz für dasTextView
Einwachsen lässt, kann er verschlossen werden.Wenn dies nicht der Fall ist, ist es auch möglich, dass der
onMeasure()
vonTextView
manchmal die Buchstabenschwänze, nicht-lateinische Zeichen oder die Auswirkungen von kursivem Text nicht richtig misst. Sie können dies korrigieren, indem Sie einen globalen Stil für Ihren festlegen,TextView
damit dieser übernommen wird, ohne dass Ihre gesamte Codebasis geändert werden muss:Stellen Sie sicher, dass Ihre Anwendung / Aktivitäten ein benutzerdefiniertes Thema wie folgt verwenden:
Die Antwort von @Rynadt war wirklich hilfreich, um die obige Stufe zu erreichen. Durch Einstellen der Schwerkraft des Textes in der Ansicht wird auf einigen Geräten sichergestellt, dass keine Okklusion stattfindet (der Text wird korrekt in die Ansicht eingefügt), auf anderen wird durch eine helfende Hand beim Auffüllen eines sp-Werts sichergestellt, dass die Schwänze usw. berücksichtigt werden mit einem TextSize-spezifischen Wert.
quelle
Meine Lösung war nahe an der akzeptierten, aber ich musste sie ändern
stattdessen. Andernfalls wären auch die anderen Zeilen mit zusätzlichen Zeilenumbrüchen an zufälligen Stellen gestreckt worden. Zum Beispiel hatte die größte Zeile 4 Zeilen, sodass eine andere Zeile von geändert wurde
this is a testphrase
zu
quelle
Ich habe eine andere Lösung gefunden, indem ich TextView erweitert und eine benutzerdefinierte Klasse wie diese hinzugefügt habe:
quelle
this.setEllipsize(TextUtils.TruncateAt.END);
die obige if-Anweisung hinzu und entfernen Sie sieandroid:ellipsize="end"
aus dem XML, wodurch sie aus irgendeinem Grund beschädigt wird.versuchen Sie mit Android zu entfernen: paddingBottom = "20dp"
von
quelle
getViewTreeObserver().addOnGlobalLayoutListener
funktioniert nicht in einer Recycler-Ansicht. Wenn Sie einen Recycler verwenden, verwenden SieView.addOnLayoutChangeListener
:Ich stellte fest, dass die Ellipsengröße, für die ich
textView
in XML definiert hatte, nicht immer wiedergegeben wurde. Daher habe ich sie programmgesteuert festgelegt, bevor ich die Texteigenschaft neu zugewiesen habe. Das hat bei mir funktioniert.quelle
Wenn Sie dieses Problem haben und
TextView
sich in einem befindenRelativeLayout
, versuchen Sie, dasRelativeLayout
für ein zu wechselnLinearLayout
.Das hat das Problem für mich behoben
quelle
Sie können einen globalen Layout-Listener für eine Textansicht in jeder Art von ViewGroup verwenden.
Sie können mehr darüber lesen Sie hier
quelle
Ich denke, es gibt sehr wenig, was Sie tun können, um dies durch Ändern der Layouts zum Laufen zu bringen. Da ich festgestellt habe, dass einige Methoden nur in einigen Fällen funktionieren. Ich denke, es hängt von der gesamten Layouthierarchie ab und ist keine Einheitslösung. Mir ist auch aufgefallen, dass dies besonders dann passiert, wenn Sie eine andere Schriftart haben, die Sie in der Textansicht festlegen möchten.
Eine sichere Shot-Methode, die ich experimentiert und getestet habe, besteht darin, dass Sie die Schriftattribute im Code festlegen können, nachdem die Ansicht aufgeblasen wurde. Ich gehe davon aus, dass Sie eine Schriftart im Ordner "Assets / Fonts" haben, die Sie möchten.
Zum Beispiel in einem Fragment:
Und in einer Aktivität:
quelle
Ich habe das gleiche Problem und es ist sehr ärgerlich.
Es kommt nur mit arabischem Text vor.
Wenn Sie die Beschriftung mehrzeilig machen und
\n
am Ende Ihrer Zeichenfolge eine hinzufügen , wird dies behoben. Das Problem besteht jedoch darin, dass zwischen dieser Beschriftung und dem darunter liegenden Objekt aufgrund der Tatsache, dass dieses Feld vorhanden ist, eine große Lücke besteht hat jetzt eine neue leere Zeile darunter.Eine benutzerdefinierte Steuerung kann durchgeführt werden, um dies zu umgehen. Aber insgesamt ist dies ein nerviger Fehler.
quelle
Die beste Problemumgehung hierfür ist das Hinzufügen einer Dummy-Ansicht mit der gewünschten Höhe (dh dies fügt selbst Polsterung hinzu) am unteren Rand Ihrer Ansicht.
Wie in meinem Fall habe ich eine weitere Tabellenzeile am unteren Rand der Ansicht hinzugefügt. Hoffe das könnte jemandem helfen.
quelle
Ich weiß, dass es so spät ist, aber das ist Arbeit für mich wie ein Zauber. Fügen Sie diesen Code Ihrem hinzu
textview
quelle
Fügen Sie am unteren Rand der Textansicht eine Auffüllung hinzu:
quelle
Ich habe es endlich behoben!
Ich versuche, String zu TextView in Service hinzuzufügen und dann scrollTo () aufzurufen, die letzte Zeile wird abgeschnitten!
Das scrollTo () sollte in "Runnable" aufgerufen werden, wie:
Ich denke, es liegt daran, dass das Update von TextView im Monent des Aufrufs scrollTo () im Dienst nicht bereit ist.
quelle