Выравнивание текста справа в Android TextView
у меня есть TextView в моем приложении. Я хочу выровнять текст справа. Я попытался добавить:
но это не работает для меня.
что я могу делать неправильно?
18 ответов
Я думаю, что вы делаете это: android:layout_width = «wrap_content»
Если это так, сделайте следующее: android:layout_width = «match_parent»
В общем, android:gravity=»right» отличается от android:layout_gravity=»right» .
первый влияет на положение самого текста в представлении, поэтому, если вы хотите, чтобы он был выровнен по правому краю, то layout_width= должно быть «fill_parent» или «match_parent» .
второй влияет на положение представления внутри его родителя, другими словами-выравнивание самого объекта (поле редактирования или текстовое представление) внутри родительского представления.
лучшим решением является тот, который является самым простым, и тот, который делает меньше изменений в вашем поведении кода.
что делать, если вы можете решить эту проблему только с 2 свойства TextView ?
вместо того, чтобы изменить свой LinearLayout свойства, которые, возможно, могут изменить поведение LinearLayout Чайлдс?
используя этот путь, вам не нужно изменить LinearLayout свойства и поведение, нужно только добавить два следующих свойства для вашей цели TextView :
что было бы лучше изменить только вашу цель, чтобы решить ваше решение, вместо того, чтобы иметь шанс вызвать другую проблему в будущем, изменяя ваш целевой отец? подумайте об этом 🙂
android:layout_gravity используется для выравнивания текстового представления относительно родительского макета. android:gravity используется для выравнивания текста внутри текстового представления.
вы уверены, что пытаетесь выровнять текст внутри текстового представления справа или хотите переместить само текстовое представление вправо по отношению к родительскому макету или пытаетесь достичь обоих
убедитесь, что вы не используете android:layout_width=»wrap_content» Если это так, то он не сможет установить гравитацию, потому что у вас недостаточно места для выравнивания текста. Вместо этого используйте android:layout_width=»fill_parent»
Источник
Выровнять текст по правому краю в Android TextView
У меня есть TextView в моем заявлении. Я хочу выровнять текст справа. Я попытался добавить:
Но это не работает для меня.
Что я могу делать не так?
Я думаю, что вы делаете это: android:layout_width = «wrap_content»
если это так, сделайте это: android:layout_width = «match_parent»
В общем, android:gravity=»right» отличается от android:layout_gravity=»right» .
Первый влияет на положение самого текста в представлении, поэтому, если вы хотите, чтобы он был выровнен по правому краю, то layout_width= должно быть либо «fill_parent» или «match_parent» .
Второй влияет на положение View внутри его родителя, другими словами — выравнивание самого объекта (поле редактирования или текстовое представление) внутри родительского представления.
Лучшее решение — это то, которое является самым простым, и которое делает меньше изменений в поведении вашего кода .
Что делать, если вы можете решить эту проблему только с 2 свойствами на вашем TextView ?
Вместо того, чтобы менять свои LinearLayout свойства, которые могут изменить поведение LinearLayout детей?
Используя этот способ, вам не нужно изменять LinearLayout свойства и поведение, вам нужно только добавить два следующих свойства к вашей цели TextView :
Что может быть лучше, если вы измените только свою цель, чтобы решить ваше решение, вместо того, чтобы иметь шанс вызвать другую проблему в будущем, изменяя вашего целевого отца? подумай об этом 🙂
Источник
Android TextView: выравнивание текста по ширине
Как добиться выравнивания текста в TextView (с выравниванием текста слева и справа)?
Я нашел возможное решение здесь, но оно не работать (даже если вы измените vertical-center на center_vertical и т. д.).
26 ответов
Для выравнивания текста в android я использовал WebView
Я пока не могу загрузить изображения, чтобы доказать это, но «у меня это работает».
TextView в Android O предлагает полное выравнивание (новое типографское выравнивание).
Вам просто нужно сделать это:
Котлин
Java
XML
По умолчанию: JUSTIFICATION_MODE_NONE ( none в xml).
ОБНОВЛЕНО
Мы создали для этого простой класс. В настоящее время есть два метода достижения того, что вы ищете. Оба требуют НЕТ WEBVIEW и ПОДДЕРЖИВАЕТ SPANNABLES .
ПОДДЕРЖКА : Android 2.0 до 5.X
НАСТРОЙКА
Вы можете использовать проект JustifiedTextView для Android в github. это настраиваемый вид, имитирующий для вас выровненный по ширине текст. Он поддерживает Android 2.0+ и языки справа налево.
Для этого я пишу базу виджетов на собственном текстовом представлении.
Я нашел способ решить эту проблему, но это может быть не очень изящно, но эффект неплохой.
Его принцип заключается в замене пробелов в каждой строке на ImageSpan фиксированной ширины (цвет прозрачный).
Очень просто Мы можем сделать это в файле xml
Вот как я это сделал, на мой взгляд, самый элегантный способ. При использовании этого решения единственное, что вам нужно сделать в макетах:
- добавить дополнительную декларацию xmlns
- измените пространство имен исходного текста TextView s с android на новое пространство имен
- замените TextView на x.y.z.JustifiedTextView
Вот код. Прекрасно работает на моих телефонах (Galaxy Nexus Android 4.0.2, Galaxy Teos Android 2.1). Не стесняйтесь, конечно, заменить мое имя пакета вашим.
/assets/justified_textview.css :
/res/values/attrs.xml :
/res/layout/test.xml :
/src/net/bicou/myapp/widget/JustifiedTextView.java :
Нам нужно настроить рендеринг на программное обеспечение, чтобы получить прозрачный фон на Android 3+. Отсюда и проблема для более старых версий Android.
Надеюсь это поможет!
PS: пожалуйста, обратите внимание, что может быть полезно добавить это ко всей вашей деятельности на Android 3+, чтобы получить ожидаемое поведение:
android:hardwareAccelerated=»false»
Хотя вы все еще не полностью выровненный по ширине текст, теперь вы можете сбалансировать длину строк с помощью android:breakStrategy=»balanced» , начиная с API 23.
Выравнивание текста Android для TextView XML
Просто Android с выравниванием текста по ширине в XML. Вы можете просто реализовать в виджете textview.
По умолчанию android:justificationMode=»none»
Я пишу свой собственный класс для решения этой проблемы. Вот вам просто нужно вызвать статическую функцию выравнивания, которая принимает два аргумента.
- Текстовый объект просмотра
- Ширина содержимого (общая ширина вашего текстового представления)
FILL_HORIZONTAL эквивалентно CENTER_HORIZONTAL . Вы можете увидеть этот фрагмент кода в исходном коде textview:
Для этой проблемы существует CustomView, это настраиваемое текстовое представление поддерживает Justified Text View.
Добавьте указанный выше класс в папку src и используйте этот пример кода для добавления в свой макет:
Просто импортируйте два файла «TextJustifyUtils.java» и «TextViewEx.java» в свой проект.
Теперь, если вы используете обычный textView, например:
Определите переменную и установите для параметра justify значение true,
Обоснование содержания TextView: Его простые ребята просто используют android: justificationMode = «inter_word» в вашем теге TextView.
Просто попробуйте это,
Надеюсь на эту помощь!
Я думаю, что есть два варианта:
Используйте что-то вроде Pango, который специализируется на этом через NDK, и визуализируйте текст в OpenGL или на другой поверхности.
Android пока не поддерживает полное обоснование. Мы можем использовать Webview и выравнивать HTML вместо использования textview. Это прекрасно работает. Если вам непонятно, не стесняйтесь спрашивать меня 🙂
На android, чтобы выровнять текст по левому краю и не иметь усечения цвета фона, попробуйте это, у меня это сработало, давая согласованные результаты на android, ff, т.е. и chrome, но вы должны измерить пространство, которое осталось между текстом при расчете заполнения.
Хакерством является padding-right:1000px; , который сдвигает текст в крайнее левое положение.
Любая попытка сдвинуть код влево или по ширине в css или html приводит к созданию фона только половинной ширины.
Эта строка кода сделает ваш текст оправданным
Вы можете использовать justificationMode как inter_word в xml. Вы должны помнить, что этот атрибут доступен для уровня API 26 и выше. Для этого вы можете назначить targetApi как o. Полный код приведен ниже.
Попробуйте использовать RelativeLayout > (обязательно fill_parent), затем просто добавьте android:layout_alignParentLeft=»true» и
android:layout_alignParentRight=»true» к элементам, которые вы хотели бы видеть снаружи ВЛЕВО и ВПРАВО.
Источник
Многострочный TextView в Android?
мне понравилось внизу в xml
это не работает для multiline , и я использую TableLayout .
так что же я здесь делаю?
15 ответов
если текст, который вы кладете в TextView короткий, он не будет автоматически расширяться до четырех линий. Если вы хотите TextView to всегда есть четыре строки независимо от длины текста в нем, установите :
вы можете сделать это с помощью TableRow, см. ниже код
Я попытался прокомментировать один из ответов выше, но у меня недостаточно репутации.
Я просто подумал, что добавлю это, если вы используете:
затем представление перестает быть кликабельным. Я пытался получить многострочные textviews в моем меню выдвижного ящика, который, очевидно,должен реагировать на щелчки.
на android:singleLine=»false» работал отлично.
мне не нравится ни один из ответов. Просто установите inputType и TextView адаптируется к его содержимому
протестировано на Nexus One (2.3) и Nexus 4 (4.4)
просто добавьте textview в ScrollView
просто поместите ‘\n ‘ внутри текста. дополнительный атрибут не требуется:)
мне не нравится решение, которое вынуждает количество строк в текстовом виде. Я скорее предлагаю вам решить его с помощью решения предлагаемый здесь. Как я вижу, OP также борется с тем, чтобы текстовый вид выглядел как правильный в таблице и shrinkColumns является правильной директивой для передачи, чтобы достичь желаемого.
попробуйте работать с EditText, сделав его unclickable и unfocusable, также вы можете отобразить полосу прокрутки и удалить нижнюю панель EditText.
Вот пример:
надеюсь, что это помогает 🙂
что я узнал, так это добавить «\n » между словами, где вы хотите, чтобы он тормозил в следующую строку. Например.
\n между 5 вечера и By позволил мне больше контролировать, где я хотел, чтобы моя следующая строка начиналась и заканчивалась.
лучший ответ, который я нашел для многострочного TextView:
заменить «\n» С Html equavalent «
» тогда звоните Html.fromHtml() в строке. Выполните следующие действия:
это отлично работает.
это сработало для меня. 1-номер столбца.
для меня не решения не работали. Я знаю, что это не полный ответ на этот вопрос, но иногда он может помочь.
Я поместил 4 textviews в вертикальный linearlayout.
Это решение подходит для случаев, когда текстовый вид текста постоянен, например метки.
Почему бы вам не объявить строку вместо записи длинных строк в файл макета. Для этого вам нужно объявить строку кода в файл макета»android:text=»@string/text » и перейти к \\app\src\main\res\values\strings.xml и добавьте строку кода «ваш многострочный текст здесь» также используйте «\n», чтобы разорвать строку из любой точки, иначе строка будет автоматически скорректирована.
TextView будет многострочным, когда он не получит достаточно места, чтобы поместиться в одной строке, а singLine не установлен в true.
Если он получает пространство в одной строке, оно не будет многострочным.
Источник
Как центрировать текст по горизонтали и вертикали в TextView?
Как отцентрировать текст по горизонтали и вертикали в a TextView , чтобы он отображался точно по центру TextView in Android ?
Я предполагаю, что вы используете макет XML.
Вы также можете использовать гравитацию center_vertical или в center_horizontal соответствии с вашими потребностями.
и как @stealthcopter прокомментировал в Java: .setGravity(Gravity.CENTER);
Это сделает свое дело
Вы также можете настроить его динамически, используя:
Это работает при использовании с RelativeLayout, где высота и ширина макета установлены на wrap_content.
Вы также можете использовать комбинацию:
Затем, если ширина textview больше, чем «fill_parent», текст все равно будет выровнен по левому краю (не по центру, так как гравитация установлена только на «center»).
Есть два способа сделать это.
Первый в коде XML. Вам нужно обратить внимание на Gravity Атрибут. Вы также можете найти этот атрибут в графическом редакторе; это может быть проще, чем редактор XML.
Для вашего конкретного сценария значения гравитации будут:
В графическом редакторе вы найдете все возможные значения, даже увидите их результаты.
Если вы используете TableLayout, не забудьте также установить центр тяжести TableRows. В противном случае это не будет работать. По крайней мере, это не работало со мной, пока я не установил гравитацию TableRow в центр.
Например, вот так:
Вам нужно установить TextView Gravity (Center Horizontal и Center Vertical) следующим образом:
И динамически используя:
По моему мнению,
по крайней мере для форматирования текста.
Для линейного макета: в XML используйте что-то вроде этого
Чтобы сделать это во время выполнения, используйте что-то подобное в своей деятельности
Для Относительного расположения: в XML используйте что-то вроде этого
Чтобы сделать это во время выполнения, используйте что-то подобное в своей деятельности
Используйте в файле XML.
Файл макета
Используйте это внутри класса Java
Используйте это для относительного расположения
и для другого макета
Если TextView’s высота и ширина — wrap content то текст внутри TextView всегда будет в центре. Но если TextView’s ширина равна, match_parent а высота равна match_parent или равна, wrap_content вы должны написать следующий код:
Для RelativeLayout:
Для LinearLayout:
Хотя использование гравитации работает для TextView, есть альтернативный метод, реализованный на уровне API 17 —
Не знаю разницы, но это тоже работает. Однако только для уровня API 17 или выше.
Во RelativeLayout , будет приятно с этим.
И еще, Button и все, что вы можете добавить.
Следующее работает хорошо для меня.
Самый простой способ (который удивительно упоминается только в комментариях, поэтому я и публикую в качестве ответа) это:
Вы можете просто установить gravity свой текстовое представление в CENTER .
Если вы пытаетесь центрировать текст на TableRow в TableLayout, вот как я этого добился:
Вот мой ответ, который я использовал в своем приложении. Он показывает текст в центре экрана.
Если вы используете Относительный макет:
Если вы используете LinearLayout
Как и многие ответы предлагают выше работает нормально.
Если вы хотите отцентрировать его по вертикали:
или только горизонтально:
Просто в своем XML-файле установите гравитацию textview по центру:
Вы можете сделать это, чтобы центрировать текст
Высота и ширина TextView — это содержимое переноса, затем текст в пределах textview всегда центрируется, а затем делается по центру в его родительском макете с помощью:
Для LinearLayout также код такой же:
и программно родительским является Java-код RelativeLayout, это во время выполнения использовать что-то подобное в вашей деятельности
Мы можем достичь этого несколькими способами:
TextView гравитация работает в соответствии с вашим родительским макетом.
LinearLayout :
Если вы используете LinearLayout, то вы найдете два гравитационных атрибута android: gravity & android: layout_gravity
android: gravity: представляет зелье макета внутреннего текста TextView, а android: layout_gravity: представляет позицию TextView в родительском представлении.
Если вы хотите установить текст горизонтально и вертикально по центру, используйте приведенный ниже код
RelativeLayout :
Используя RelativeLayout вы можете использовать свойство ниже в TextView
android: gravity = «center» для текстового центра в TextView.
android: gravity = «center_horizontal» внутренний текст, если вы хотите горизонтально центрировать.
android: gravity = «center_vertical» внутренний текст, если вы хотите по центру.
android: layout_centerInParent = «true», если вы хотите, чтобы TextView находился в центральной позиции родительского представления. android: layout_centerHor horizontal = «true», если вы хотите, чтобы TextView находился в горизонтальном центре родительского представления. android: layout_centerVertical = «true», если вы хотите, чтобы TextView располагался вертикально в центре родительского представления.
Источник