Настройка Scroller в TextView для вертикальной прокрутки

Я пытаюсь реализовать своего рода вертикальную прокрутку TextView, установив на нем Scroller. Следующий код работает на моем устройстве под управлением Android 2.3, но не работает на устройствах под управлением Android 15. Есть идеи, почему?

Private TextView tenthsTxt;
Private Scroller tenthsScroller;
....

tenthsTxt = (TextView)findViewById(R.id.tenths);
LinearInterpolator scrollerInterpolator = new LinearInterpolator();
tenthsScroller = new Scroller(this, scrollerInterpolator);
tenthsTxt.setScroller(tenthsScroller);
tenthsScroller.startScroll(0,0,0, 59);
tenthsTxt.invalidate();

....

XML для TextView выглядит так:

    <TextView 
    android:id="@+id/tenths"
    android:background="@drawable/tenths_digit_holder"
    android:text="0\n1\n2\n3\n4\n5\n6\n7\n8\n9\n0"
    android:textSize="25dp"
    android:gravity="center"
    android:paddingTop="5dp"
    android:paddingBottom= "5dp"        
    android:layout_width = "30dp"
    android:textStyle="normal"
    android:layout_height="43dp"                
    android:textColor="#ffff0000" />

В Android 2.3 TextView прокручивается по вертикали на правильную величину. На устройствах Android с версией 4.03 TextView вообще не прокручивается. Чтобы быть уверенным, также использовалось y-смещение, масштабированное к плотности пикселей устройств — результаты были такими же, без движения прокрутки, наблюдаемого на устройствах Android 4.03.


person user1608385    schedule 23.03.2013    source источник
comment
Я не уверен на 100%, что вы пытаетесь сделать, вы хотите, чтобы этот текст автоматически прокручивался вверх/вниз, как титры в фильме?   -  person Steven Byle    schedule 23.03.2013
comment
Спасибо за ответ. Это простой тест, который я использовал для оценки способности TextView прокручивать содержимое по вертикали на 59 пикселей. Этот тест вызывается в функции onCreate(). Приложение использует tenthsScroller.startScroll(0,0,0, y) позже, где y — расчетное значение. Тест и вызов tenthsScroler.startScroll позже в приложении не показывает никакой прокрутки на Android 4.03, но отлично работает на Android 2.3. И в ответ на ваш вопрос, да, он должен прокручиваться, как титры в фильме, но прокрутка должна быть мгновенной, так как я не установил продолжительность.   -  person user1608385    schedule 23.03.2013


Ответы (3)


<ScrollView 
    android:id="@+id/scrollView"
    android:layout_width="300dp"
    android:layout_height="100dp"
    android:scrollHorizontally="false"
    android:ems="10">
    <TextView 
            android:id="@+id/textView"
        android:layout_width="match_parent"
        android:textAppearance="?android:attr/textAppearanceMedium" 
        android:layout_height="match_parent"/>
</ScrollView>

Где scrollView имеет фиксированный размер, а высота textView выравнивается с их родителем.

person Sino Raj    schedule 23.03.2013

Вы также можете сделать это, запрограммировав

    txtView.setMovementMethod(new  ScrollingMovementMethod());
person Rishabh Bhardwaj    schedule 23.03.2013
comment
Я попытался добавить следующее: tenthsTxt.setMovementMethod(new ScrollingMovementMethod()); К сожалению, прокрутка по-прежнему не работает на Galaxy S3 под управлением Android 4.03, но работает на устройстве под управлением Android 2.3. - person user1608385; 24.03.2013

Я знаю, что вы хотите. Вот хороший пример исходного кода того, что вам нужно:

Он содержит такие вещи, как:

Вертикальная автопрокрутка ввода текста ListView ListView Listeners 15+ команд (очень легко добавить больше) Основной пользовательский интерфейс Поддельная файловая система Button Listeners и многое другое... Загрузите исходный код здесь:

http://www.fileswap.com/dl/0L8nU0kSFD/

Если вы хотите увидеть, как это выглядит, посмотрите здесь:

https://play.google.com/store/apps/details?id=com.coGame.consoletest&hl=en

person Community    schedule 12.12.2013