Android: Letzte Zeile der Textansicht abgeschnitten

113

Ich habe eine Horizontale LinearLayoutmit einem TextViewgefolgt von einem Spinnerdaneben. Dies LinearLayoutwird in einer festen Vertikalen, LinearLayoutdie in a enthalten ist, mehrmals dynamisch aufgeblasenRelativeLayout .

Das Problem ist, dass seit ich von Theme.lightzu gewechselt bin Theme.holo.light, die letzte Zeile von TextViewhalbiert wird. Dies geschieht, wenn der dynamische Text lang ist und mehr als eine Zeile umfasst.

Geben Sie hier die Bildbeschreibung ein

Ich konnte dies beheben, indem ich der Horizontalen, LinearLayoutdie das TextViewund 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>
Rynardt
quelle
versuchen Sie mit dem Entfernen von Android: paddingBottom = "20dp"
Dheeresh Singh
2
Versuchen Sie, die Textansicht aufzufüllen, und lineare Layoutränder können ebenfalls hilfreich sein
Aashish Bhatnagar
LinearLayout ist bei horizontaler Verwendung sehr problematisch. Verwenden Sie stattdessen das ConstraintLayout. Sehen. stackoverflow.com/a/48677954/630668
Dharmendra

Antworten:

55

Ich habe das gleiche Cut-Off-Problem festgestellt, wie im Screenshot gezeigt. Dies wird durch die Ausrichtung der Grundlinie in der Horizontalen verursacht LinearLayout. TextViewund Spinnerhaben 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:

android:baselineAligned="false"

oder im Code:

layout.setBaselineAligned(false);
Jusid
quelle
2
Ich wünschte, ich könnte dies 100 Mal abstimmen! Ich habe in den letzten Tagen sooooo viel Zeit mit diesem Thema verschwendet, und Ihre Antwort war meine Lösung! Ich wusste nicht, was so lange los war, weil es so schwierig ist, die Ansichtshierarchie unter Android zu debuggen. Vielen Dank!!!
mbm29414
Dies war neben Rynardts Antwort die Lösung für mein Problem. Danke dir!
James Dobson
1
Dies ist die richtige Antwort und zeigt den Grund auf, warum ein Fehler aufgetreten ist. Vielen Dank.
Hoang Nguyen Huu
Dies ist ein großer Tipp für solche Situationen. Gar nicht so schlecht. Danke dir!
sunlover3
260

Nachdem ich eine Million verschiedene Dinge ausprobiert habe, denke ich, dass ich die Antwort habe.

Ich habe a LayoutGravityauf das TextView-Element angewendet:

android:layout_gravity="fill"

Scheint alle Clipping-Probleme zu lösen, die ich hatte. Hoffe das hilft jemandem mit dem gleichen Problem.

Rynardt
quelle
12
perfekt, tnx, +1; Beachten Sie, dass viele layout_gravity-Werte hilfreich sind, z. center_vertical
Grzegorz Dev
2
Wenn dies nicht funktioniert, sollte das Hinzufügen eines Füllwerts von "1sp" funktionieren. Ich erstelle einen Stil, der erweitert @android:style/Widget.TextViewund die folgenden Zeilen hinzufügt:<item name="android:gravity">fill</item> <item name="android:padding">1sp</item>
Graeme
Warum tritt dieses Problem nur bei arabischem Text auf ?!
Menna-Allah Sami
12
Das ist nur eine Problemumgehung. Die richtige Lösung ist, android:baselineAligned="false"zu IhremLinearLayout
Tomrozb
1
Obwohl dies zu funktionieren scheint, ist die richtige Lösung die aus Tomrozbs Kommentar oben oder Jusids Antwort
Eduard B.
28

Ich hatte das gleiche Problem und fand das einfach hinzufügen

android:includeFontPadding="false"

In der letzten Textzeile wurden die Nachkommen nicht mehr abgeschnitten.

Neal Sanche
quelle
1
Bei benutzerdefinierten Schriftarten ist dies möglicherweise die perfekte Lösung. Dies ist die einzige Lösung, die bei der Verwendung von Droid Sans Japanese für mich funktioniert hat.
Computingfreak
11

Ich habe nach dem Text durch Hinzufügen etwas Dummy-Leerzeichen hinzugefügt

textView.setText(firstString+"\n");

Ich habe alle anderen Lösungen ausprobiert. Aber dies war die einzige Lösung, die für mich funktioniert hat

Ameer
quelle
das, was du "chepi" nennst
Zulqurnain Jutt
6

Fügen Sie die problematische Textansicht in ein Framelayout ein. Ich denke, die Textansicht ist aufgrund der Geschwisteransicht Spinner nicht korrekt berechnet.

<?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">

    <FrameLayout
        android:layout_width="150dp"
        android:layout_height="wrap_content">
        <TextView
            android:id="@+id/textView1"
            android:layout_width="150dp"
            android:layout_height="wrap_content"
            android:layout_marginRight="20dp"
            android:text="TextView"/>
    </FrameLayout>
    <Spinner
        android:id="@+id/spinner1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
</LinearLayout>
Rubin Yoo
quelle
1
Ich hatte CheckBoxin gleich LinearLayout. Dies löste das Problem.
Chintan Shah
Arbeitete wie ein Zauber mit einer CheckBox-Situation wie @ChintanShah
Ignacardel
5

In diesem Fall sollten Sie sicherstellen, dass die TextView Behälter nicht größer als der Behälter wird.

Wenn a auf gesetzt TextViewist wrap_contentund der Container (oder ein Ahnencontainer) keinen Platz für das TextViewEinwachsen lässt, kann er verschlossen werden.

Wenn dies nicht der Fall ist, ist es auch möglich, dass der onMeasure()von TextViewmanchmal 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, TextViewdamit 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:

<style name="Custom" parent="@android:style/Theme.Light">   
    <item name="android:textViewStyle">@style/Custom.Widget.TextView</item>
</style>

<style name="Custom.Widget.TextView" parent="@android:style/Widget.TextView"> 
    <item name="android:gravity">fill</item>
    <item name="android:padding">1sp</item>
</style>

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.

Graeme
quelle
5

Meine Lösung war nahe an der akzeptierten, aber ich musste sie ändern

   android:layout_gravity="fill_vertical"

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

thi
s is
a testph
rase
Spookysister
quelle
1
Funktioniert bei mir. Vielen Dank! +1
Ahmed
5

Ich habe eine andere Lösung gefunden, indem ich TextView erweitert und eine benutzerdefinierte Klasse wie diese hinzugefügt habe:

 public class AdaptingTextView extends TextView {

    public AdaptingTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public AdaptingTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public AdaptingTextView(Context context) {
        super(context);
    }

    @Override
    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        super.onSizeChanged(w, h, oldw, oldh);

        // set fitting lines to prevent cut text
        int fittingLines = h / this.getLineHeight();
        if (fittingLines > 0) {
            this.setLines(fittingLines);
        }
    }

}
Anzeigename
quelle
Funktioniert hervorragend, aber seien Sie vorsichtig, wenn Sie layout_margin in der Textansicht angegeben haben, da dadurch die Anzahl der Anpassungslinien kürzer als erwartet werden kann! Ich wechselte zu Polsterung anstelle von Rändern und Problem behoben
MobileMon
1
Das funktioniert absolut perfekt. Mit Abstand die beste Lösung, die ich gefunden habe.
Moonbloom
1
Dies ist die richtige Antwort, danke! Um es ein bisschen schöner zu machen und '...' am Ende des Textes hinzuzufügen, bevor er abgeschnitten wird, fügen Sie this.setEllipsize(TextUtils.TruncateAt.END);die obige if-Anweisung hinzu und entfernen Sie sie android:ellipsize="end"aus dem XML, wodurch sie aus irgendeinem Grund beschädigt wird.
NeilS
4

versuchen Sie mit Android zu entfernen: paddingBottom = "20dp"

von

 <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:paddingBottom="20dp"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:paddingTop="10dp" >
Dheeresh Singh
quelle
1
Die Polsterung dort ist eigentlich nicht verwandt, da in diesem relativen Layout zusätzliche Elemente mit der Polsterung enthalten sind. Ich habe sie entfernt, um das Lesen dieses Beitrags zu erleichtern. Siehe fragliche Bearbeitung.
Rynardt
4

getViewTreeObserver().addOnGlobalLayoutListenerfunktioniert nicht in einer Recycler-Ansicht. Wenn Sie einen Recycler verwenden, verwenden SieView.addOnLayoutChangeListener :

Ich stellte fest, dass die Ellipsengröße, für die ich textViewin 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.

textView.addOnLayoutChangeListener(new OnLayoutChangeListener() {
    @Override
        public void onLayoutChange(View v, int left, int top, int right, int bottom,
                                   int oldLeft, int oldTop, int oldRight, int oldBottom) {
            textView.removeOnLayoutChangeListener(this);
            float lineHeight = textView.getLineHeight();
            int maxLines = (int) (textView.getHeight() / lineHeight);
            if (textView.getLineCount() != maxLines) {
                textView.setLines(maxLines);
                textView.setEllipsize(TextUtils.TruncateAt.END);
                // Re-assign text to ensure ellipsize is performed correctly.
                textView.setText(model.getText());
            }
        }
    });
mp501
quelle
3

Wenn Sie dieses Problem haben und TextViewsich in einem befinden RelativeLayout, versuchen Sie, das RelativeLayoutfür ein zu wechseln LinearLayout.

Das hat das Problem für mich behoben

JesperB
quelle
Dies ist die einzige Lösung, die für mich funktioniert (seltsames Verhalten)! Thx
mrroboaat
1
Wie können Sie einfach von RelativeLayout zu LinearLayout "wechseln"? Wenn Sie relativ gestalten müssen, ist eine Implementierung mit LinearLayout nahezu unmöglich.
Der unglaubliche
3

Sie können einen globalen Layout-Listener für eine Textansicht in jeder Art von ViewGroup verwenden.

    final TextView dSTextView = (TextView)findViewById(R.id.annoyingTextView);
dSTextView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

    @Override
    public void onGlobalLayout() {
        dSTextView.getViewTreeObserver().removeOnGlobalLayoutListener(this);

        float lineHeight = dSTextView.getLineHeight();
        int maxLines = (int) (dSTextView.getHeight() / lineHeight);

        if (dSTextView.getLineCount() != maxLines) {
            dSTextView.setLines(maxLines);
        }

    }
});

Sie können mehr darüber lesen Sie hier

Jim Baca
quelle
1

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:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState)
{
    View view = inflater.inflate(R.layout.fragment_view, container, false);
    TextView tv = (TextView)view.findViewById(R.id.text_view);
    tv.setText("Insert text that needs to be displayed");
    AssetManager assetManager = getContext().getAssets();
    Typeface typeFace = Typeface.createFromAsset(assetManager, "Fonts/OpenSans-Light.ttf");
    tv.setTypeface(typeFace , 0); // 0 is normal font
    tv.setPadding(10,  0, 10, 0); // This is not mandatory
}

Und in einer Aktivität:

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(Resource.Layout.main_activity);
    TextView tv = (TextView)this.findViewById(R.id.text_view);
    tv.setText("Insert text that needs to be displayed");
    AssetManager assetManager = getContext().getAssets();
    Typeface typeFace = Typeface.createFromAsset(assetManager, "Fonts/OpenSans-Light.ttf");
    tv.setTypeface(typeFace , 0); // 0 is normal font
    tv.setPadding(10,  0, 10, 0); // This is not mandatory
}
Mahesh Iyer
quelle
1

Ich habe das gleiche Problem und es ist sehr ärgerlich.

Es kommt nur mit arabischem Text vor.

Wenn Sie die Beschriftung mehrzeilig machen und \nam 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.

Adel Ammari
quelle
Wenn Sie eine neue Frage haben, fragen Sie es bitte durch Klicken Frage stellen Taste. Wenn Sie einen ausreichenden Ruf haben, können Sie die Frage positiv bewerten . Alternativ können Sie es als Favorit "markieren" und Sie werden über neue Antworten informiert.
Martijn Pieters
0

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.

<TableRow
 android:layout_width="fill_parent"
 android:layout_height="wrap_content"
 android:layout_marginLeft="5dp"
 android:layout_marginRight="5dp" >
     <View 
       android:layout_width="match_parent" 
       android:layout_height="30dp"/>
</TableRow>

Wie in meinem Fall habe ich eine weitere Tabellenzeile am unteren Rand der Ansicht hinzugefügt. Hoffe das könnte jemandem helfen.

Anuj Sharma
quelle
0

Ich weiß, dass es so spät ist, aber das ist Arbeit für mich wie ein Zauber. Fügen Sie diesen Code Ihrem hinzutextview

android:ellipsize="marquee"
android:layout_weight="1"
feucht
quelle
0

Fügen Sie am unteren Rand der Textansicht eine Auffüllung hinzu:

android:paddingBottom="24dp"
Phil
quelle
-1

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:

private ScrollView mScrollView;
public void scrollToBottom()
{
    mScrollView = (ScrollView) findViewById(R.id.debug_textview_scrollview);
    mScrollView.post(new Runnable()
    {
        public void run()
        {
            mScrollView.fullScroll(View.FOCUS_DOWN);
        }
    });
}

Ich denke, es liegt daran, dass das Update von TextView im Monent des Aufrufs scrollTo () im Dienst nicht bereit ist.

Kazon
quelle