Я отображаю текст в текстовом представлении, которое кажется слишком длинным, чтобы поместиться на одном экране. Мне нужно сделать мой TextView прокручиваемым. Как я могу это сделать?
Вот код:
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);
maxLines
требует от вас ввести произвольное число; это не то, что будет работать для каждого размера экрана и размера шрифта? Я считаю, что проще просто обернуть егоScrollView
, что означает, что мне не нужно добавлять какие-либо дополнительные атрибуты XML или код (например, установка метода движения).ScrollView
оператору занимать столько места, сколько ему нужно (например, черезandroid:fillViewport
атрибут), либо вы устанавливаете нужный размер. ИспользованиеmaxLines
не должно использоваться для установки размеров элементов пользовательского интерфейса, так что это не решение.Вот как я сделал это чисто в XML:
НОТЫ:
android:fillViewport="true"
в сочетании сandroid:layout_weight="1.0"
заставит textview занять все доступное пространство.При определении Scrollview НЕ указывайте,
android:layout_height="fill_parent"
иначе scrollview не работает! (это заставило меня потратить впустую час только сейчас! FFS).PRO TIP:
Чтобы программно прокрутить до конца после добавления текста, используйте это:
источник
mTextView.getBottom()
, просто используйте метод,mScrollView.fullScroll(View.FOCUS_DOWN)
поскольку он является частью ScrollView API. Смотрите здесь и здесь для получения дополнительной информации.LinearLayout
или другоеScrollView
(яLinearLayout
полностью удалил ). Он также предупреждает, что дляTextView
, он долженandroid:layout_height="wrap_content"
соответствоватьScrollView
. Эти предупреждения могут быть связаны с 3 годами, прошедшими с момента публикации этого ответа. Несмотря на это, этот ответ поддерживает плавную прокрутку и щелчок ... + 1<!--suppress AndroidLintUselessParent -->
вышеScrollView
в xml-файл позаботится об этих предупреждениях.Все, что действительно необходимо, это setMovementMethod (). Вот пример использования LinearLayout.
Файл main.xml
Файл WordExtractTest.java
источник
ScrollView
методом.StringBuilder
вместоString
... то, что у вас есть, немного расточительно.Сделайте свое текстовое представление просто добавив это
источник
Не нужно ставить в
Вы можете сделать свою работу, просто добавив:
И поместите этот код в свой класс Java:
источник
Вы также можете
TextView
собойScrollView
; илиScrollingMovementMethod.getInstance();
.источник
Лучший способ, который я нашел:
Замените TextView на EditText с этими дополнительными атрибутами:
Там нет необходимости для упаковки в ScrollView.
источник
ScrollView
это правильный путь.Просто. Вот как я это сделал:
Сторона XML:
Java сторона:
Бонус:
Чтобы текстовое представление прокручивалось вниз по мере заполнения текста, вы должны добавить:
в текстовый XML-файл. Он будет прокручиваться автоматически по мере поступления текста.
Конечно, вам нужно добавить текст, используя функцию добавления вместо набора текста:
Я использовал это для целей журнала.
Надеюсь, это поможет ;)
источник
Это «Как применить ScrollBar к вашему TextView», используя только XML.
Во-первых, вам нужно взять элемент управления Textview в файле main.xml и записать в него некоторый текст ... вот так:
Затем поместите элемент управления представлением текста между областью прокрутки, чтобы отобразить полосу прокрутки для этого текста:
Это оно...
источник
Это обеспечит плавную прокрутку текста с помощью полосы прокрутки.
источник
«Про наконечник» выше от кого - то Где - то ( Создания TextView Прокручиваемого на Android ) прекрасно работает, однако, что , если вы динамически добавлять текст к ScrollView и хотели бы автоматически прокрутки на дно после Append только тогда, когда пользователь находится в нижней части ScrollView? (Возможно, потому что, если пользователь прокрутил что-то, чтобы прочитать что-то, вы не хотите автоматически сбрасывать его во время добавления, что будет раздражать.)
Во всяком случае, вот оно:
MTextStatus.getLineHeight () сделает так, чтобы вы не использовали scrollToBottom (), если пользователь находится в пределах одной строки от конца ScrollView.
источник
Если вы хотите, чтобы текст прокручивался в текстовом представлении, вы можете выполнить следующие действия:
Сначала вы должны создать подкласс textview.
И затем используйте это.
Ниже приведен пример просмотра подкласса текста.
Теперь вы должны использовать это в XML следующим образом:
Вот и все.
источник
Добавьте следующее в текстовое представление в XML.
И, наконец, добавить
в файле Java.
источник
Я не нашел прокрутки TextView для поддержки жеста «броска», когда он продолжает прокручиваться после пролистывания вверх или вниз. Я сам реализовал это, потому что не хотел использовать ScrollView по разным причинам, и, похоже, не было MovementMethod, который позволял бы мне выбирать текст и нажимать на ссылки.
источник
В kotlin для того, чтобы сделать прокручиваемый текстовый вид
а также добавить в XML это свойство
источник
Когда вы закончите с прокруткой, добавьте эту строку в последнюю строку представления, когда вы вводите что-либо в представление:
источник
Если вы не хотите использовать решение EditText, то вам может повезти с:
источник
Добавьте это к вашему XML-макету:
И в коде вы должны написать следующие строки:
источник
Код ниже создает автоматическую горизонтальную прокрутку текста:
При добавлении TextView для использования XML
Установите следующие свойства TextView в onCreate ()
источник
Вы можете прокрутить его сейчас.
источник
Используйте это так
источник
В моем случае. Ограничение Layout.AS 2.3.
Реализация кода:
XML:
источник
Я боролся с этим больше недели и наконец понял, как заставить это работать!
Моя проблема заключалась в том, что все будет прокручиваться как «блок». Сам текст прокручивался, но скорее как кусок, чем строка за строкой. Это, очевидно, не работает для меня, потому что это будет отрезать линии внизу. Все предыдущие решения не работали для меня, поэтому я разработал собственное.
Вот самое простое решение на сегодняшний день:
Создайте файл класса с именем: 'PerfectScrollableTextView' внутри пакета, затем скопируйте и вставьте этот код в:
Наконец, измените ваш TextView в XML:
От:
<TextView
Для того, чтобы:
<com.your_app_goes_here.PerfectScrollableTextView
источник
Положите
maxLines
иscrollbars
внутри TextView в XML.Тогда в коде Java.
textView.setMovementMethod(new ScrollingMovementMethod());
источник
У меня была эта проблема, когда я использовал
TextView
внутриScrollView
. Это решение сработало для меня.источник
всякий раз, когда вам нужно использовать ScrollView в качестве родителя , а также вы используете метод перемещения прокрутки с TextView.
А при портретной ориентации вашего устройства в это время возникают некоторые проблемы . (например) вся страница прокручивается, но метод перемещения прокрутки не может работать.
если вам все еще нужно использовать ScrollView в качестве родительского метода или метода прокрутки, то вы также используете ниже desc.
Если у вас нет никаких проблем, тогда вы используете EditText вместо TextView
см. ниже :
Здесь EditText ведет себя как TextView
И ваша проблема будет решена
источник
XML - вы можете использовать
android:scrollHorizontally
атрибутРазрешается ли текст быть шире, чем вид (и, следовательно, может быть прокручен горизонтально).
Может быть логическим значением, таким как «истина» или «ложь».
Приграмакалия -
setHorizontallyScrolling(boolean)
источник
Попробуй это:
источник