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);
maxLines
mü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 versehenScrollView
, was bedeutet, dass ich keine weiteren XML-Attribute oder Code hinzufügen muss (wie das Festlegen der Bewegungsmethode).ScrollView
so viel Platz beanspruchen, wie es benötigt (z. B. über dasandroid:fillViewport
Attribut), oder Sie legen die gewünschte Größe fest. Die Verwendung vonmaxLines
sollte nicht zum Festlegen der Größe von UI-Elementen verwendet werden, daher ist dies keine Lösung.So habe ich es rein in XML gemacht:
ANMERKUNGEN:
android:fillViewport="true"
In Kombination mitandroid:layout_weight="1.0"
nimmt die Textansicht den gesamten verfügbaren Platz ein.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:
quelle
mTextView.getBottom()
einfach die Methode,mScrollView.fullScroll(View.FOCUS_DOWN)
da sie Teil der ScrollView-API ist. Weitere Informationen finden Sie hier und hier .LinearLayout
oder dasScrollView
in diesem Beispiel unbrauchbar sein könnte (ich habe dasLinearLayout
vollständig entfernt). Es warnt auch , dass für dieTextView
, sollte esandroid:layout_height="wrap_content"
die übereinstimmenScrollView
. 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<!--suppress AndroidLintUselessParent -->
über derScrollView
XML-Datei werden diese Warnungen berücksichtigt.Alles was wirklich notwendig ist, ist die setMovementMethod (). Hier ist ein Beispiel mit einem LinearLayout.
Datei main.xml
Datei WordExtractTest.java
quelle
ScrollView
Methode umständlich .StringBuilder
anstelle vonString
... was Sie haben, ist ein wenig verschwenderisch.Machen Sie Ihre Textansicht, indem Sie dies hinzufügen
quelle
Es ist nicht notwendig, in zu setzen
Sie können Ihre Arbeit erledigen, indem Sie einfach Folgendes hinzufügen:
Fügen Sie diesen Code in Ihre Java-Klasse ein:
quelle
Du kannst entweder
TextView
von einemScrollView
; oderScrollingMovementMethod.getInstance();
.quelle
Der beste Weg, den ich gefunden habe:
Ersetzen Sie die Textansicht durch einen EditText mit den folgenden zusätzlichen Attributen:
Es ist nicht erforderlich, eine ScrollView einzuschließen.
quelle
ScrollView
ist der richtige Weg.Einfach. So habe ich es gemacht:
XML-Seite:
Java-Seite:
Bonus:
Damit die Textansicht beim Ausfüllen des Texts nach unten scrollen kann, müssen Sie Folgendes hinzufügen:
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:
Ich habe es für Protokollzwecke verwendet.
Ich hoffe das hilft ;)
quelle
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 :
Platzieren Sie als Nächstes das Steuerelement für die Textansicht zwischen der Bildlaufansicht, um die Bildlaufleiste für diesen Text anzuzeigen:
Das ist es...
quelle
Dadurch erhalten Sie einen reibungslosen Bildlauftext mit einer Bildlaufleiste.
quelle
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:
Mit mTextStatus.getLineHeight () wird festgelegt, dass Sie nicht scrollToBottom () ausführen, wenn sich der Benutzer innerhalb einer Zeile vom Ende der ScrollView befindet.
quelle
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.
Jetzt müssen Sie das im XML folgendermaßen verwenden:
Das ist es.
quelle
Fügen Sie in der Textansicht in XML Folgendes hinzu.
Und schließlich hinzufügen
in der Java-Datei.
quelle
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.
quelle
In Kotlin, um die Textansicht scrollbar zu machen
und fügen Sie diese Eigenschaft auch in XML hinzu
quelle
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:
quelle
Wenn Sie die EditText-Lösung nicht verwenden möchten, haben Sie möglicherweise mehr Glück mit:
quelle
Fügen Sie dies Ihrem XML-Layout hinzu:
Und im Code müssen Sie die folgenden Zeilen schreiben:
quelle
Der folgende Code erstellt eine automatische Textansicht mit horizontalem Bildlauf:
Beim Hinzufügen von TextView zu XML verwenden
Legen Sie die folgenden Eigenschaften von TextView in onCreate () fest.
quelle
Sie können es jetzt scrollen.
quelle
Verwenden Sie es so
quelle
In meinem Fall.Constraint Layout.AS 2.3.
Code-Implementierung:
XML:
quelle
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:
Ändern Sie schließlich Ihre 'TextView' in XML:
Von:
<TextView
Zu:
<com.your_app_goes_here.PerfectScrollableTextView
quelle
Setzen
maxLines
undscrollbars
innen Textview in xml.Dann im Java-Code.
textView.setMovementMethod(new ScrollingMovementMethod());
quelle
Ich hatte dieses Problem, als ich
TextView
in derScrollView
. Diese Lösung hat bei mir funktioniert.quelle
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 :
Hier verhält sich der EditText wie TextView
Und Ihr Problem wird gelöst
quelle
XML - Sie können
android:scrollHorizontally
Attribute verwendenGibt 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)
quelle
Versuche dies:
quelle