Горизонтальная прокрутка по тексту на андроиде?
Я работаю над калькулятором. Я заметил, что в стандартном 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
и не имеет никакого эффекта.