Горизонтальная прокрутка по тексту на андроиде?

Я работаю над калькулятором. Я заметил, что в стандартном android calc вы можете прокручивать текстовое окно по горизонтали. Я просмотрел документацию и узнал об атрибуте android:scrollHorizontally но после добавления его в текстовое представление я до сих пор не могу выполнять горизонтальную прокрутку, в документации больше нет информации об этом, что заставляет думать, что достаточно добавить attr. Это текст калькулятора:

    <TextView android:id="@+id/edit_text"
        android:layout_width="0dip"
        android:layout_height="match_parent"
        android:layout_weight=".8"
        android:singleLine="true"
        android:scrollHorizontally="true"
        android:gravity="center|right"
        android:text="0" />

Когда символы превышают ширину текста, строка обрезается и... появляется на ней. Что я делаю не так?

Ответы

Ответ 1

<HorizontalScrollView android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView android:layout_width="40dp"
        android:layout_height="wrap_content"
        android:scrollHorizontally="true"
        android:text="Horizontal scroll view will work now"/>

</HorizontalScrollView>

Вот как вы можете сделать textview прокручивать по горизонтали.

Ответ 2

Я немного опоздал, но мне удалось достичь того же результата без добавления HorizontalScrollView

EditText расширяет TextView для поддержки прокрутки и выбора. Таким образом, вы можете использовать EditText в качестве TextView (сенсорный, фокус и курсор отключены).

<EditText
    android:id="@+id/edit_text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@android:color/transparent" --> This remove that line at the bottom
    android:clickable="false" --> It can be true if you need to handle click events
    android:cursorVisible="false" --> Hide the cursor
    android:focusable="false" --> Disable focus
    android:singleLine="true"
    android:text="This is a very long text that won't be possible to display in a single line"/>

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

Ответ 3

Возможно поздний ответ, но можно сделать прокрутку TextView в обоих направлениях. Нет необходимости scrollHorizontally свойство scrollHorizontally в XML или коде.

Следующий код выполняет однострочную или многострочную прокрутку TextView по вертикали и по горизонтали в зависимости от содержимого текста.

<HorizontalScrollView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/toolbar"
        android:scrollbars="none">

        <ScrollView
            android:id="@+id/scroll_view"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:scrollbars="none">

            <androidx.appcompat.widget.AppCompatTextView
                android:id="@+id/text_content"
                fontPath="fonts/roboto_medium.ttf"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textColor="@color/primary_text"
                android:textSize="14sp" />

        </ScrollView>
</HorizontalScrollView>

Обратите внимание, что layout_width для ScrollView и TextView установлены в wrap_content. Ширина для HorizontalScrollView может быть либо wrap_content либо match_parent и не имеет никакого эффекта.