907 Stimmen

TextView unter Android scrollbar machen

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

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);

11voto

Raluca Lucaci Punkte 1958

In Kotlin, um die Textansicht scrollbar zu machen

myTextView.movementMethod= ScrollingMovementMethod()

und fügen Sie auch in xml diese Eigenschaft hinzu

    android:scrollbars = "vertical"

11voto

Mark Cramer Punkte 2284

Der obige "Profi-Tipp" von Someone Somewhere ( TextView unter Android scrollbar machen ) funktioniert großartig, aber was ist, wenn man dynamisch Text zur ScrollView hinzufügt und nach dem Anhängen automatisch nach unten blättern möchte? nur wenn sich der Benutzer am unteren Rand der ScrollView befindet? (Wenn der Benutzer nach oben gescrollt hat, um etwas zu lesen, möchten Sie vielleicht nicht automatisch an den unteren Rand zurückgesetzt werden, wenn Sie etwas anhängen, was lästig wäre).

Wie auch immer, hier ist es:

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

Die Funktion mTextStatus.getLineHeight() sorgt dafür, dass Sie nicht scrollToBottom() ausführen, wenn sich der Benutzer innerhalb einer Zeile vom Ende des ScrollViews befindet.

11voto

IT-Dan Punkte 565

Dadurch wird ein reibungsloser Textlauf mit einer Bildlaufleiste ermöglicht.

ScrollView scroller = new ScrollView(this);
TextView tv = new TextView(this);
tv.setText(R.string.my_text);
scroller.addView(tv);

0 Stimmen

Aktiviert die blaue Animation. Beste Antwort hier IMO.

10voto

Dipendra Punkte 1539

Wenn Sie möchten, dass der Text innerhalb der Textansicht gescrollt wird, dann können Sie wie folgt vorgehen:

Zuerst sollten Sie die Unterklasse textview anlegen.

Und dann verwenden Sie das.

Im Folgenden finden Sie 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;
    }
}

Nun müssen Sie das in der XML-Datei auf diese Weise 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 war's.

9voto

user3921740 Punkte 300

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

android:scrollbars="vertical"

Und schließlich fügen Sie hinzu

textView.setMovementMethod(new ScrollingMovementMethod());

in der Java-Datei.

2 Stimmen

Das kinetische Scrollen ist nicht möglich. Verwenden Sie es nicht.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X