Как я полностью предотвратить прокрутку текстового просмотра?

StackOverflow https://stackoverflow.com//questions/24027108

Вопрос

У меня есть текстовый просмотр с большим количеством текста.Этот текстовый просмотр имеет набор maxLines, поэтому он показывает только первые 8 или около того строки.У меня также есть кнопка «Подробнее», поэтому я справляюсь с расширением TextView самостоятельно.

Моя проблема в том, что иногда текстовый просмотр немного прокручивается (всего в половине линии за раз), хотя я никогда не указывал никаких полос прокрутки.Эта проблема становится все хуже, потому что TextView находится внутри ListView, поэтому, когда пользователь прокручивает главный список ListView, TextView иногда прокручивается, как это:

Blahblah

Как мне предотвратить прокрутку текстового просмотра?

Это было полезно?

Решение

У меня такая же проблема, мое решение создает noscrolltextView расширяет текстовый просмотр, как это

 public class NoScrollTextView extends TextView {
    public NoScrollTextView(Context context) {
        super(context);
    }

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

    public NoScrollTextView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    public NoScrollTextView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

    @Override
    public void scrollTo(int x, int y) {
        //do nothing
    }
}
.

Установите Scroltto ничего не делать

в Котлин:

class NonScrollingTextView : TextView {
    constructor(context: Context) : super(context) {}
    constructor(context: Context, attrs: AttributeSet) : super(context, attrs) {}
    constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int) : super(context, attrs, defStyleAttr) {}
    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    constructor(context: Context, attrs: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attrs, defStyleAttr, defStyleRes) {
    }

    override fun scrollTo(x: Int, y: Int) {
        //do nothing
    }
}
.

Другие советы

Так что я сделал небольшое исследование, и я не думаю, что это так же просто, как просто отключение прокрутки, но есть несколько вещей, которые вы можете сделать / попробовать.

Первый заселен (false), но это отключит ссылки и изменяют цвет текста.

Второй, который я предлагаю пытаться, использует Scroltto (INT X, INT Y).Просто прокрутите (0,0) после установки текста текстового представления, мое предположение - это большой текст - это единственное, что вызывает прокрутку, чтобы это должно было позаботиться об этом.

Третий ответ, который я обнаружил, что вы можете попробовать немного сложнее, а не совсем ваш вопрос, но он может работать для вас можно найти здесь .

public class LinkMovementMethodOverride implements View.OnTouchListener{

@Override
public boolean onTouch(View v, MotionEvent event) {
    TextView widget = (TextView) v;
    Object text = widget.getText();
    if (text instanceof Spanned) {
        Spanned buffer = (Spanned) text;

        int action = event.getAction();

        if (action == MotionEvent.ACTION_UP
                || action == MotionEvent.ACTION_DOWN) {
            int x = (int) event.getX();
            int y = (int) event.getY();

            x -= widget.getTotalPaddingLeft();
            y -= widget.getTotalPaddingTop();

            x += widget.getScrollX();
            y += widget.getScrollY();

            Layout layout = widget.getLayout();
            int line = layout.getLineForVertical(y);
            int off = layout.getOffsetForHorizontal(line, x);

            ClickableSpan[] link = buffer.getSpans(off, off,
                    ClickableSpan.class);

            if (link.length != 0) {
                if (action == MotionEvent.ACTION_UP) {
                    link[0].onClick(widget);
                } else if (action == MotionEvent.ACTION_DOWN) {                             
                    // Selection only works on Spannable text. In our case setSelection doesn't work on spanned text
                    //Selection.setSelection(buffer, buffer.getSpanStart(link[0]), buffer.getSpanEnd(link[0]));
                }
                return true;
            }
        }

    }

    return false;
}

}
.

"После этого примените его к цели TEXTVIEW AS TOCK LISSITER: -

TextView.SetOntouchListener (новый linkmovementmethodoverride ()); "

Мне нужна была функция, как увидеть больше в моем проекте, и я использовал Ellipsing TextView от этогоПочта.Он работает как очарование, а также обеспечивает интерфейс для проверки, был ли текст эллипсирован.Это должно сделать трюк.

Просто используйте setminlines () для всегдаОтображение целого текста

Попробуйте эти строки кода в XML

android:isScrollContainer="false"
android:ellipsize="end"
.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top