TextView unter Android scrollbar machen

772

Ich zeige Text in einer Textansicht an, die zu lang erscheint, um in einen Bildschirm zu passen. Ich muss meine TextView scrollbar machen. Wie kann ich das machen?

Hier ist der Code:

final TextView tv = new TextView(this);
tv.setBackgroundResource(R.drawable.splash);
tv.setTypeface(face);
tv.setTextSize(18);
tv.setTextColor(R.color.BROWN);
tv.setGravity(Gravity.CENTER_VERTICAL| Gravity.CENTER_HORIZONTAL);
tv.setOnTouchListener(new OnTouchListener() {
    public boolean onTouch(View v, MotionEvent e) {
        Random r = new Random();
        int i = r.nextInt(101);
        if (e.getAction() == e.ACTION_DOWN) {
            tv.setText(tips[i]);
            tv.setBackgroundResource(R.drawable.inner);
        }
        return true;
    }
});
setContentView(tv);
Muhammad Maqsoodur Rehman
quelle

Antworten:

1721

Sie müssen eigentlich kein verwenden ScrollView.

Stellen Sie einfach die

android:scrollbars = "vertical"

Eigenschaften von TextViewin der XML-Datei Ihres Layouts.

Dann benutze:

yourTextView.setMovementMethod(new ScrollingMovementMethod());

in Ihrem Code.

Bingo, es rollt!

Amit Chintawar
quelle
96
Aber sicherlich maxLinesmüssen Sie eine beliebige Nummer eingeben; Dies ist nicht etwas, das für jede Bildschirmgröße und Schriftgröße funktioniert? Ich finde es einfacher, es einfach mit einem zu versehen ScrollView, was bedeutet, dass ich keine weiteren XML-Attribute oder Code hinzufügen muss (wie das Festlegen der Bewegungsmethode).
Christopher Orr
12
@Christopher, ScrollView benötigt auch 'android: layout_height'.
Regex Rookie
11
@ Regex: Na ja. Entweder lassen Sie das Gerät ScrollViewso viel Platz beanspruchen, wie es benötigt (z. B. über das android:fillViewportAttribut), oder Sie legen die gewünschte Größe fest. Die Verwendung von maxLinessollte nicht zum Festlegen der Größe von UI-Elementen verwendet werden, daher ist dies keine Lösung.
Christopher Orr
62
Sie müssen keine Maxlines definieren. nur der Rest.
Stevanicus
13
Um zu verdeutlichen, was alle über "glattes" Scrollen sagen: Wenn Sie diese Methode verwenden, ist das Scrollen tatsächlich "glatt" (da Sie Pixel für Pixel scrollen können), jedoch nicht kinetisch. Sobald Sie Ihren Finger entfernen, hört er sofort auf zu scrollen - es gibt kein Schnippen. Dies ist für eine moderne Benutzeroberfläche ziemlich inakzeptabel, daher werde ich die Antwort bearbeiten, um sicherzustellen, dass andere Leute keine Zeit mit dieser "Lösung" verschwenden.
Timmmm
310

So habe ich es rein in XML gemacht:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <ScrollView
        android:id="@+id/SCROLLER_ID"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:scrollbars="vertical"
        android:fillViewport="true">

        <TextView
            android:id="@+id/TEXT_STATUS_ID"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_weight="1.0"/>
    </ScrollView>
</LinearLayout>

ANMERKUNGEN:

  1. android:fillViewport="true"In Kombination mit android:layout_weight="1.0"nimmt die Textansicht den gesamten verfügbaren Platz ein.

  2. Geben Sie beim Definieren der Bildlaufansicht NICHT an, da android:layout_height="fill_parent"sonst die Bildlaufansicht nicht funktioniert! (Dies hat mich veranlasst, gerade eine Stunde zu verschwenden! FFS).

PRO TIPP:

Verwenden Sie Folgendes, um nach dem Anhängen von Text programmgesteuert nach unten zu scrollen:

mTextStatus = (TextView) findViewById(R.id.TEXT_STATUS_ID);
mScrollView = (ScrollView) findViewById(R.id.SCROLLER_ID);

private void scrollToBottom()
{
    mScrollView.post(new Runnable()
    {
        public void run()
        {
            mScrollView.smoothScrollTo(0, mTextStatus.getBottom());
        }
    });
}
Irgendwer irgendwo
quelle
12
Es ist nicht erforderlich, verwenden Sie mTextView.getBottom()einfach die Methode, mScrollView.fullScroll(View.FOCUS_DOWN)da sie Teil der ScrollView-API ist. Weitere Informationen finden Sie hier und hier .
ChuongPham
7
Android warnt davor, dass entweder das LinearLayoutoder das ScrollViewin diesem Beispiel unbrauchbar sein könnte (ich habe das LinearLayoutvollständig entfernt). Es warnt auch , dass für die TextView, sollte es android:layout_height="wrap_content"die übereinstimmen ScrollView. Diese Warnungen können auf die 3 Jahre zurückzuführen sein, die seit der Veröffentlichung dieser Antwort vergangen sind. Unabhängig davon unterstützt diese Antwort das reibungslose Scrollen und Streichen ... + 1
skia.heliou
Durch Hinzufügen <!--suppress AndroidLintUselessParent -->über der ScrollViewXML-Datei werden diese Warnungen berücksichtigt.
Louie Bertoncin
Der "Pro-Tipp" funktioniert bei Android API Level 9 nicht. Die Textansicht bleibt nach dem Anhängen von Text nach oben gescrollt.
LarsH
Dieser Ansatz ist viel besser, wenn der akzeptierte Antwortansatz nicht zu einer reibungslosen Benutzererfahrung führt.
Seyedrezafar
120

Alles was wirklich notwendig ist, ist die setMovementMethod (). Hier ist ein Beispiel mit einem LinearLayout.

Datei main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView
    android:id="@+id/tv1"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:text="@string/hello"
    />
</LinearLayout>

Datei WordExtractTest.java

public class WordExtractTest extends Activity {

    TextView tv1;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        tv1 = (TextView)findViewById(R.id.tv1);

        loadDoc();
    }

    private void loadDoc() {

        String s = "";

        for(int x=0; x<=100; x++) {
            s += "Line: " + String.valueOf(x) + "\n";
        }

        tv1.setMovementMethod(new ScrollingMovementMethod());

        tv1.setText(s);
    }
}
EddieB
quelle
3
Gibt es eine Möglichkeit, diese Eigenschaft in XML festzulegen? Ich frage mich, warum sie diese Option auslassen würden.
Thalur
Es funktioniert, aber gibt es eine Möglichkeit, es nach dem Scrollen zu aktualisieren? Ich meine, nach dem Scrollen der Textansicht werde ich den Text darauf ändern, aber seine Position bleibt gescrollt, auch wenn es nicht erforderlich ist. Es war bcose zuvor hatte ich Scroll angewendet ...
Nirav Dangi
9
Keine Bildlaufleisten, und das Scrollen ist im Vergleich zur ScrollViewMethode umständlich .
Jeffrey Blattman
1
Verwenden Sie ein StringBuilderanstelle von String... was Sie haben, ist ein wenig verschwenderisch.
Alex Lockwood
4
Dies funktioniert, aber das Scrollen ist nicht reibungslos. Funktioniert aber trotzdem danke.
frostymarvelous
46

Machen Sie Ihre Textansicht, indem Sie dies hinzufügen

TextView textview= (TextView) findViewById(R.id.your_textview_id);
textview.setMovementMethod(new ScrollingMovementMethod());
Matasoy
quelle
16
Dies führt kein kinetisches Scrollen durch. Verwenden Sie dies nicht.
Timmmm
3
@Timmmm wie bekomme ich die kinetische Schriftrolle?
Ciro Santilli 5 病毒 审查 六四 事件 5
Sie möchten kein "kinetisches Scrollen" für einen Text, der gelesen werden muss.
Der unglaubliche
41

Es ist nicht notwendig, in zu setzen

android:Maxlines="AN_INTEGER"`

Sie können Ihre Arbeit erledigen, indem Sie einfach Folgendes hinzufügen:

android:scrollbars = "vertical"

Fügen Sie diesen Code in Ihre Java-Klasse ein:

textview.setMovementMethod(new ScrollingMovementMethod());
Ahsan Raza
quelle
Viel bessere Lösung als die akzeptierte, da die Größe der Bildlaufleiste genau zum Text passt und Sie keinen Platz verschwenden.
FractalBob
Wenn ich ScrollView als übergeordnetes Element verwende, funktioniert es diesmal nicht
Prince
27

Du kannst entweder

  1. umgeben die TextViewvon einem ScrollView; oder
  2. Stellen Sie die Bewegungsmethode auf ein ScrollingMovementMethod.getInstance();.
Samuh
quelle
22

Der beste Weg, den ich gefunden habe:

Ersetzen Sie die Textansicht durch einen EditText mit den folgenden zusätzlichen Attributen:

android:background="@null"
android:editable="false"
android:cursorVisible="false"

Es ist nicht erforderlich, eine ScrollView einzuschließen.

Valentin Galea
quelle
2
Einfach die beste und am besten geeignete Antwort, insbesondere wenn man bedenkt, dass EditText eine TextView-Unterklasse ist und die Frage lautet, wie die Textansicht scrollbar gemacht werden kann und nicht, wie das Problem umgangen werden kann. Würde zweimal abstimmen, wenn ich könnte :)
Justin Buser
4
@ JustinBuser Könnte nicht mehr widersprechen. :) Es ist rein zufällig, dass dies funktioniert, und es gibt keine Garantie dafür, dass dies in zukünftigen Versionen von Android der Fall sein wird. Wenn Sie einen Bildlauf durchführen möchten, verwenden Sie die von Android bereitgestellten Bildlaufwerkzeuge. ScrollViewist der richtige Weg.
Madbreaks
1
@Madbreaks EditText ist eine Textansicht mit einigen hinzugefügten Methoden und Überschreibungen, die speziell auf Text unterschiedlicher Länge zugeschnitten ist. Insbesondere überschreibt EditText den Rückgabewert für die TextView-Funktion getDefaultMovementMethod. Die Standardimplementierung gibt NULL zurück. EditText macht im Grunde das Gleiche wie alle anderen Antworten. In Bezug auf die Verwendung der von Android bereitgestellten Tools ist die Wahrscheinlichkeit, dass die EditText-Klasse veraltet ist, weitaus geringer als bei allen anderen in diesen Antworten enthaltenen Methoden.
Justin Buser
4
@JustinBuser Mein Problem dabei ist jedoch, dass Sie vom Standardverhalten von EditText abhängen. Das , was ich damit gemeint habe, kann sich später durchaus ändern (EditText wäre überhaupt nicht veraltet). Sie können argumentieren, dass die Idee darin besteht, Komponenten und Funktionen zu verwenden, die für die jeweilige Aufgabe geeignet sind. ScrollView wurde explizit für das Scrollen entwickelt. Ich versuche es immer und schlage immer vor, dass andere das richtige Werkzeug für den Job verwenden. Es gibt fast immer mehrere Ansätze für ein bestimmtes Programmierproblem. Trotzdem danke für die nachdenkliche Antwort.
Madbreaks
16

Einfach. So habe ich es gemacht:

  1. XML-Seite:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        tools:context="com.mbh.usbcom.MainActivity">
        <TextView
            android:id="@+id/tv_log"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:scrollbars="vertical"
            android:text="Log:" />
    </RelativeLayout>
  2. Java-Seite:

    tv_log = (TextView) findViewById(R.id.tv_log);
    tv_log.setMovementMethod(new ScrollingMovementMethod());

Bonus:

Damit die Textansicht beim Ausfüllen des Texts nach unten scrollen kann, müssen Sie Folgendes hinzufügen:

    android:gravity="bottom"

in die TextView-XML-Datei. Es wird automatisch nach unten gescrollt, wenn mehr Text eingeht.

Natürlich müssen Sie den Text mithilfe der Append-Funktion hinzufügen, anstatt den Text festzulegen:

    tv_log.append("\n" + text);

Ich habe es für Protokollzwecke verwendet.

Ich hoffe das hilft ;)

MBH
quelle
14

Dies ist "So wenden Sie ScrollBar auf Ihre Textansicht an", wobei nur XML verwendet wird.

Zuerst müssen Sie ein Textview-Steuerelement in die Datei main.xml übernehmen und Text hineinschreiben ... wie folgt :

<TextView
    android:id="@+id/TEXT"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:text="@string/long_text"/>

Platzieren Sie als Nächstes das Steuerelement für die Textansicht zwischen der Bildlaufansicht, um die Bildlaufleiste für diesen Text anzuzeigen:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent">

    <ScrollView
        android:id="@+id/ScrollView01"
        android:layout_height="150px"
        android:layout_width="fill_parent">

        <TextView
            android:id="@+id/TEXT"
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:text="@string/long_text"/>

    </ScrollView>
</RelativeLayout>

Das ist es...

mOmO
quelle
6
Warum das überhaupt schreiben? Dies ist eine fast identische, wenn auch weniger korrekte Version einer Antwort, die über 6 Monate vor dem Schreiben veröffentlicht wurde.
Justin Buser
11

Dadurch erhalten Sie einen reibungslosen Bildlauftext mit einer Bildlaufleiste.

ScrollView scroller = new ScrollView(this);
TextView tv = new TextView(this);
tv.setText(R.string.my_text);
scroller.addView(tv);
IT-Dan
quelle
Aktiviert die blaue Animation. Beste Antwort hier IMO.
Griffin W.
11

Der obige "Pro-Tipp" von Someone Somewhere ( TextView unter Android scrollbar machen ) funktioniert jedoch hervorragend. Was ist, wenn Sie der ScrollView dynamisch Text hinzufügen und nach einem Anhängen nur dann automatisch nach unten scrollen möchten, wenn sich der Benutzer gerade befindet das Ende der ScrollView? (Vielleicht, weil Sie, wenn der Benutzer nach oben gescrollt hat, um etwas zu lesen, während eines Anhängens nicht automatisch nach unten zurückgesetzt werden möchten, was ärgerlich wäre.)

Wie auch immer, hier ist es:

if ((mTextStatus.getMeasuredHeight() - mScrollView.getScrollY()) <=
        (mScrollView.getHeight() + mTextStatus.getLineHeight())) {
    scrollToBottom();
}

Mit mTextStatus.getLineHeight () wird festgelegt, dass Sie nicht scrollToBottom () ausführen, wenn sich der Benutzer innerhalb einer Zeile vom Ende der ScrollView befindet.

Mark Cramer
quelle
10

Wenn Sie möchten, dass Text in der Textansicht gescrollt wird, können Sie Folgendes tun:

Zuerst sollten Sie die Textansicht in Unterklassen unterteilen müssen.

Und dann benutze das.

Das Folgende ist ein Beispiel für eine untergeordnete Textansicht.

public class AutoScrollableTextView extends TextView {

    public AutoScrollableTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        setEllipsize(TruncateAt.MARQUEE);
        setMarqueeRepeatLimit(-1);
        setSingleLine();
        setHorizontallyScrolling(true);
    }

    public AutoScrollableTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        setEllipsize(TruncateAt.MARQUEE);
        setMarqueeRepeatLimit(-1);
        setSingleLine();
        setHorizontallyScrolling(true);
    }

    public AutoScrollableTextView(Context context) {
        super(context);
        setEllipsize(TruncateAt.MARQUEE);
        setMarqueeRepeatLimit(-1);
        setSingleLine();
        setHorizontallyScrolling(true);
    }

    @Override
    protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
        if(focused)
            super.onFocusChanged(focused, direction, previouslyFocusedRect);
    }

    @Override
    public void onWindowFocusChanged(boolean focused) {
        if(focused)
            super.onWindowFocusChanged(focused);
    }

    @Override
    public boolean isFocused() {
        return true;
    }
}

Jetzt müssen Sie das im XML folgendermaßen verwenden:

 <com.yourpackagename.AutoScrollableTextView
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:text="This is very very long text to be scrolled"
 />

Das ist es.

Dipendra
quelle
7

Fügen Sie in der Textansicht in XML Folgendes hinzu.

android:scrollbars="vertical"

Und schließlich hinzufügen

textView.setMovementMethod(new ScrollingMovementMethod());

in der Java-Datei.

user3921740
quelle
1
Dies führt kein kinetisches Scrollen durch. Benutze es nicht.
Timmmm
6

Ich habe kein Scrollen in TextView gefunden, um die "Fling" -Geste zu unterstützen, bei der das Scrollen nach einem Auf- oder Abblättern fortgesetzt wird. Ich habe das letztendlich selbst implementiert, weil ich aus verschiedenen Gründen kein ScrollView verwenden wollte und es anscheinend keine MovementMethod gab, mit der ich Text auswählen und auf Links klicken konnte.

android.weasel
quelle
6
soo ... wie hast du die Fling-Geste hinzugefügt?
Lou Morda
6

In Kotlin, um die Textansicht scrollbar zu machen

myTextView.movementMethod= ScrollingMovementMethod()

und fügen Sie diese Eigenschaft auch in XML hinzu

    android:scrollbars = "vertical"
Raluca Lucaci
quelle
5

Wenn Sie mit dem Bildlauf fertig sind, fügen Sie diese Zeile zur letzten Zeile der Ansicht hinzu, wenn Sie etwas in die Ansicht eingeben:

((ScrollView) findViewById(R.id.TableScroller)).fullScroll(View.FOCUS_DOWN);
Rahul Baradia
quelle
Alter, Tablescroller ist eine Ansicht, die durch das ID-Attribut aus dem XML identifiziert wurde, das in verarbeitet wurde. Sie versuchen es einfach. Es wird gut funktionieren. Es funktioniert für mich.
Rahul Baradia
4

Wenn Sie die EditText-Lösung nicht verwenden möchten, haben Sie möglicherweise mehr Glück mit:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.yourLayout);
    (TextView)findViewById(R.id.yourTextViewId).setMovementMethod(ArrowKeyMovementMethod.getInstance());
}
Justin Buser
quelle
4

Fügen Sie dies Ihrem XML-Layout hinzu:

android:ellipsize="marquee"
android:focusable="false"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:singleLine="true"
android:text="To Make An textView Scrollable Inside The TextView Using Marquee"

Und im Code müssen Sie die folgenden Zeilen schreiben:

textview.setSelected(true);
textView.setMovementMethod(new ScrollingMovementMethod());
Ritesh
quelle
2
Dies führt kein kinetisches Scrollen durch. Benutze es nicht.
Timmmm
Ich möchte den Endtext nicht ellipsen. wie mache ich es.
Sagar Nayak
@SagarNayak benutze android: ellipsize = "none"
Francis
2

Der folgende Code erstellt eine automatische Textansicht mit horizontalem Bildlauf:

Beim Hinzufügen von TextView zu XML verwenden

<TextView android:maxLines="1" 
          android:ellipsize="marquee"
          android:scrollHorizontally="true"/>

Legen Sie die folgenden Eigenschaften von TextView in onCreate () fest.

tv.setSelected(true);
tv.setHorizontallyScrolling(true); 
weiße Perle
quelle
1

Verwenden Sie es so

<TextView  
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:maxLines = "AN_INTEGER"
    android:scrollbars = "vertical"
/>
Kamil Ibadov
quelle
0

In meinem Fall.Constraint Layout.AS 2.3.

Code-Implementierung:

YOUR_TEXTVIEW.setMovementMethod(new ScrollingMovementMethod());

XML:

android:scrollbars="vertical"
android:scrollIndicators="right|end"
Sasha 888
quelle
0

Ich hatte über eine Woche lang damit zu kämpfen und fand schließlich heraus, wie ich das zum Laufen bringen kann!

Mein Problem war, dass alles als "Block" scrollen würde. Der Text selbst wurde gescrollt, aber nicht als Zeile für Zeile, sondern als Block. Das hat bei mir offensichtlich nicht funktioniert, weil es unten Linien abschneiden würde. Alle vorherigen Lösungen haben bei mir nicht funktioniert, deshalb habe ich meine eigenen erstellt.

Hier ist die mit Abstand einfachste Lösung:

Erstellen Sie eine Klassendatei mit dem Namen 'PerfectScrollableTextView' in einem Paket, kopieren Sie diesen Code und fügen Sie ihn ein:

import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.TextView;

public class PerfectScrollableTextView extends TextView {

    public PerfectScrollableTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        setVerticalScrollBarEnabled(true);
        setHorizontallyScrolling(false);
    }

    public PerfectScrollableTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        setVerticalScrollBarEnabled(true);
        setHorizontallyScrolling(false);
    }

    public PerfectScrollableTextView(Context context) {
        super(context);
        setVerticalScrollBarEnabled(true);
        setHorizontallyScrolling(false);
    }

    @Override
    protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
        if(focused)
            super.onFocusChanged(focused, direction, previouslyFocusedRect);
    }

    @Override
    public void onWindowFocusChanged(boolean focused) {
        if(focused)
            super.onWindowFocusChanged(focused);
    }

    @Override
    public boolean isFocused() {
        return true;
    }
}

Ändern Sie schließlich Ihre 'TextView' in XML:

Von: <TextView

Zu: <com.your_app_goes_here.PerfectScrollableTextView

Petro
quelle
1
100% perfekte Antwort. Ich hatte das gleiche Problem wie Sie in der Beschreibung erwähnt. viele Lösungen anwenden, aber nicht perfekt funktionieren. Aber Ihre Lösung funktioniert in jedem Fall perfekt. rette meine Zeit Mann :) Danke
Daxesh Vekariya
@DaxeshVekariya Ich bin froh, dass es für dich funktioniert hat!
Petro
0

Setzen maxLinesund scrollbarsinnen Textview in xml.

<TextView android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:scrollbars="vertical"
    android:maxLines="5" // any number of max line here.
    />

Dann im Java-Code.

textView.setMovementMethod(new ScrollingMovementMethod());

Khemraj
quelle
0

Ich hatte dieses Problem, als ich TextViewin der ScrollView. Diese Lösung hat bei mir funktioniert.

scrollView.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {

                description.getParent().requestDisallowInterceptTouchEvent(false);

                return false;
            }
        });

        description.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {

                description.getParent().requestDisallowInterceptTouchEvent(true);

                return false;
            }
        });
Rohit Mandiwal
quelle
0

Wann immer Sie ScrollView als übergeordnetes Element verwenden müssen , und Sie verwenden auch die Scroll-Bewegungsmethode mit TextView.

Und wenn Sie Ihr Gerät im Hochformat porträtieren, tritt zu diesem Zeitpunkt ein Problem auf . (wie) ganze Seite ist scrollbar, aber Scroll-Bewegungsmethode kann nicht funktionieren.

Wenn Sie ScrollView weiterhin als übergeordnete oder Scroll-Bewegungsmethode verwenden müssen, verwenden Sie auch unten absteigend.

Wenn Sie keine Probleme haben, verwenden Sie EditText anstelle von TextView

siehe unten :

<EditText
     android:id="@+id/description_text_question"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:background="@null"
     android:editable="false"
     android:cursorVisible="false"
     android:maxLines="6"/>

Hier verhält sich der EditText wie TextView

Und Ihr Problem wird gelöst

Prinz
quelle
0

XML - Sie können android:scrollHorizontallyAttribute verwenden

Gibt an, ob der Text breiter als die Ansicht sein darf (und daher horizontal gescrollt werden kann).

Kann ein boolescher Wert sein, z. B. "true" oder "false".

Prigramacaly - setHorizontallyScrolling(boolean)

Hash
quelle
0

Versuche dies:

android:scrollbars = "vertical"
mohamad sheikhi
quelle