- RelativeLayout
- Программное создание относительной разметки
- Создаём неподвижную полоску
- как выровнять текст по вертикали по центру в android
- 5 ответов
- Как центрировать текст по горизонтали и вертикали в TextView?
- 30 ответов
- Google Android — это несложно
- Нет вертикального выравнивания текста в TextView
- Нет вертикального выравнивания текста в TextView
- Re: Нет вертикального выравнивания текста в TextView
- Re: Нет вертикального выравнивания текста в TextView
- Re: Нет вертикального выравнивания текста в TextView
- Re: Нет вертикального выравнивания текста в TextView
- Re: Нет вертикального выравнивания текста в TextView
RelativeLayout
ReiativeLayout (относительная разметка) находится в разделе Layouts и позволяет дочерним компонентам определять свою позицию относительно родительского компонента или относительно соседних дочерних элементов (по идентификатору элемента). В RelativeLayout дочерние элементы расположены так, что если первый элемент расположен по центру экрана, другие элементы, выровненные относительно первого элемента, будут выровнены относительно центра экрана. При таком расположении, при объявлении разметки в XML-файле, элемент, на который будут ссылаться для позиционирования другие объекты представления, должен быть объявлен раньше, чем другие элементы, которые обращаются к нему по его идентификатору.
Важные атрибуты, которые связаны с родителем.
- android:layout_alignParentBottom — выравнивание относительно нижнего края родителя
- android:layout_alignParentLeft — выравнивание относительно левого края родителя
- android:layout_alignParentRight — выравнивание относительно правого края родителя
- android:layout_alignParentTop — выравнивание относительно верхнего края родителя
- android:layout_centerInParent — выравнивание по центру родителя по вертикали и горизонтали
- android:layout_centerHorizontal — выравнивание по центру родителя по горизонтали
- android:layout_centerVertical — выравнивание по центру родителя по вертикали
Некоторые атрибуты можно использовать вместе, чтобы добиться нужного эффекта, например, разместить компонент в верхнем правом углу.
Компонент можно размещать не только относительно родителя, но и относительно других компонентов. Для этого все компоненты должны иметь свой идентификатор, по которому их можно будет отличать друг от друга. В этом случае вы можете задействовать другие атрибуты.
- android:layout_above — размещается над указанным компонентом
- android:layout_below — размещается под указанным компонентом
- android:layout_alignLeft — выравнивается по левому краю указанного компонента
- android:layout_alignRight — выравнивается по правому краю указанного компонента
- android:layout_alignTop — выравнивается по верхнему краю указанного компонента
- android:layout_alignBottom — выравнивается по нижнему краю указанного компонента
- android:layout_toLeftOf — правый край компонента размещается слева от указанного компонента
- android:layout_toRightOf — левый край компонент размещается справа от указанного компонента
Чтобы компоненты «не прилипали» друг к другу, используются атрибуты, добавляющие пространство между ними.
- android:layout_marginTop
- android:layout_marginBottom
- android:layout_marginLeft
- android:layout_marginRight
Рассмотрим простой пример. Допустим, мы хотим поместить на экран элементы EditText и Button. Кнопка должна находиться справа от текстового поля. Текстовое поле при этом должно быть выравнено слева относительно родительского элемента (компоновки) и слева относительно кнопки. В свою очередь кнопка должна быть выравнена справа относительно шаблона компоновки.
Во многих случаях грамотная относительная компоновка хорошо смотрится в альбомной и портретной ориентации.
Программное создание относительной разметки
Если вам понадобится динамически создавать относительную разметку в коде, то делается это следующим образом:
Создавать компоновку для относительной разметки чуть сложнее, чем для линейной компоновки. Рассмотрим ещё один пример. Предположим, нам нужен такой экран
Шаг 1: В XML-файле задаем относительную компоновку.
Шаг 2: Определяем дочерние элементы. В нашем случае мы имеем семь текстовых меток разного цвета. Каждому элементу присваиваем необходимые свойства: текст, цвет, размер символов и так далее.
Шаг 3: Определяем правила относительной разметки.
Красная метка должна находиться в правом верхнем углу родительского элемента.
Оранжевая метка должна располагаться по центру по горизонтали относительно родительского элемент.
Желтая метка выравнивается по правой части родительского элемента.
Зелёная метка выравнивается по центру (по вертикали) и выводится слева от синей метки.
Синяя метка выравнивается по центру (по вертикали и горизонтали) относительно родительского элемента, т.е. точно по центру.
Метка цвета индиго выравнивается по центру (по вертикали) и выводится справа от синей метки.
Фиолетовая метка выводится в нижней части родительского элемента и занимает всю её ширину.
При разработке макета с относительной разметкой следите, чтобы элементы не налезали друг на друга (можете получить сообщение об ошибке). Старайтесь не усложнять макет и не забывайте присваивать уникальный идентификатор каждому элементу. Проверяйте макет в разных режимах ориентации.
Создаём неподвижную полоску
С помощью RelativeLayout можно создать неподвижную полоску внизу экрана, которая не будет прокручиваться вместе со списком. Для этого используется атрибут android:layout_alignParentBottom и родственные ему атрибуты для верхней части. Вот простой пример со списком.
И простой код для создания прокручиваемого списка, чтобы увидеть эффект неподвижной полоски с кнопкой.
Источник
как выровнять текст по вертикали по центру в android
У меня арабский текст, поэтому я установил гравитацию вправо, чтобы текст начинался с правой стороны. Текст начинается прямо сейчас. Но другая проблема заключается в том, что текст начинает отображаться сверху страницы. Но мне нужно вертикально центрировать текст. Хотя я пробовал несколько вариантов, у меня не получалось сделать его вертикально по центру.
Вот образец моего файла xml.
Проблема с текстовым изображением выше.
Сюда я поместил весь xml файл.
Кто-нибудь может показать мне, где я сделал ошибку? Думаю, проблема ясна. Если нет, скажите в комментариях.
Я добавил обновленный код после просмотра ваших ответов.
Но я в такой же ситуации. Нет текста по центру по вертикали
5 ответов
Атрибуты TextView должны быть примерно такими:
Теперь опишите, почему это нужно сделать,
Делает ваш TextView на match_parent или fill_parent , если вы не хотите, чтобы он был похож на match_parent , вы должны указать определенные значения для layout_height , чтобы он получил место для вертикального центр тяжести. android:layout_width=»match_parent» необходимо, потому что он выравнивает ваш TextView по правой стороне, чтобы вы могли признать уважение к родительскому макету TextView.
Теперь о android:gravity , который выравнивает содержимое вашего TextView. android:layout_gravity обеспечивает выравнивание TextView в соответствии с его родительским макетом.
Обновление:
Как показано в комментарии ниже, используйте fill_parent вместо match_parent . (Проблема в каком-то устройстве.)
В относительной компоновке необходимо указать высоту текстового поля:
Или укажите атрибут строк:
Попробуйте поместить android:gravity=»center_vertical|right» внутри родительского LinearLayout, иначе, поскольку вы внутри RelativeLayout, вы можете поместить android:layout_centerInParent=»true» в свой scrollView .
Проблема заключается в заполнении шрифта в текстовом виде. Просто добавьте в текстовое представление:
Просто используйте это, чтобы сделать что-нибудь в центре
Обновлено: просто удалите MarginBottom из текстового представления .. Сделайте это так .. для вашего textView
Источник
Как центрировать текст по горизонтали и вертикали в TextView?
как отцентрировать текст по горизонтали и вертикали в TextView , Так что он появляется ровно в середине TextView на Android ?
30 ответов
Я предполагаю, что вы используете XML-макета.
вы также можете использовать гравитацию center_vertical или center_horizontal согласно вашей потребности.
и как прокомментировал @stealthcopter на java: .setGravity(Gravity.CENTER);
это сделает трюк
вы также можете настроить его динамически, используя:
это работает при использовании с RelativeLayout, где высота и ширина макета установлены в wrap_content.
вы также можете использовать комбинацию:
тогда, если ширина textview больше, чем» fill_parent», текст все равно будет выровнен влево (не центрирован, как при гравитации, установленной только в»центр»).
применить силы тяжести:
Если вы используете TableLayout, обязательно установите гравитацию TableRows в центр. Иначе не получится. По крайней мере, это не сработало со мной, пока я не установила гравитацию стола в центр.
например, вот так:
необходимо указать Гравитация TextView (центр горизонтальный и Центр вертикальный), как это:
и динамично, используя:
есть два способа сделать это.
первый в XML-коде. Вы должны обратить внимание на . Вы также можете найти этот атрибут в графическом редакторе; это может быть проще, чем редактор XML.
для вашего конкретного сценария, значения силы тяжести будут:
в графическом редакторе вы найдете все возможные значения, даже увидеть их результаты.
по крайней мере для форматирования текста.
Для Линейной Компоновки: В XML используйте что-то вроде этого
чтобы сделать это во время выполнения, используйте что-то вроде этого в своей деятельности
для относительного макета: в XML используйте что-то вроде этого
чтобы сделать это во время выполнения, используйте что-то вроде этого в своей деятельности
использовать в XML-файле.
шаблон
используйте это внутри класса Java
использовать относительный макет
и для другого макета
при использовании gravity works для TextView существует альтернативный метод, реализованный на уровне API 17 —
Не знаю разницы, но это тоже работает. Однако только для уровня API 17 или выше.
на RelativeLayout , это будет хорошо с ним.
и еще один Button и все остальное, что вы можете добавить.
следующее прекрасно работает для меня.
если TextView’s высота и ширина wrap content текст в теге TextView всегда быть в центре. Но если TextView’s ширина match_parent и высотой match_parent или wrap_content тогда вы должны написать следующий код:
на RelativeLayout:
на LinearLayout:
самый простой способ (который удивительно упоминается только в комментариях, поэтому я публикую в качестве ответа):
Вы можете просто установить gravity вашего textview в CENTER .
Если вы пытаетесь центрировать текст на TableRow в TableLayout, вот как я этого достиг:
вот мой ответ, который я использовал в моем приложении. Он показывает текст в центре экрана.
Если вы используете относительный макет:
Если вы используете LinearLayout
как многие ответы предлагают выше, работает нормально.
Если вы хотите центрировать его только по вертикали:
или просто по горизонтали:
просто в вашем XML-файле установите гравитацию textview в центр:
высота и ширина TextView-это содержимое обертки, тогда текст в textview всегда центрируется, а затем делает центр в Родительском макете с помощью:
для LinearLayout также код такой же:
и Pro-грамматически родитель является RelativeLayout java-код это во время выполнения использовать что-то вроде этого в вашей деятельности
вы можете сделать так, чтобы получить текст по центру
мы можем достичь этого с помощью этих нескольких способов: —
android:gravity=»center_horizontal» для выравнивания текстового Центра по горизонтали. android:gravity=»center_vertical» для выравнивания текстового Центра по вертикали. android:gravity=»center» для выравнивания текстового Центра по вертикали и горизонтали.
попробуйте этот путь, он будет работать
используйте приведенный ниже код в xml, он работал для меня, вы можете изменить ориентацию, которая будет в центре
TextView gravity работает в соответствии с вашим родительским макетом.
LinearLayout:
Если вы используете LinearLayout, вы найдете два атрибута гравитации android: гравитация и android: layout_gravity
android: gravity: представляет макет зелья внутреннего текста TextView в то время как android: layout_gravity: представляет позицию TextView в Родительском представлении.
Если вы хотите установить текст по горизонтали & вертикально центр затем используйте ниже код это
RelativeLayout:
используя RelativeLayout вы можете использовать свойство ниже в TextView
android: gravity= «центр» для текстового центра в TextView.
android: gravity= «center_horizontal» внутренний текст, если вы хотите горизонтально по центру.
android: gravity= «center_vertical» внутренний текст, если вы хотите вертикально по центру.
android: layout_centerInParent= » true» если вы хотите TextView в центральной позиции родительского представления. android: layout_centerHorizontal= «true», если вы хотите TextView в горизонтальном центре родительского представления. android: layout_centerVertical= «true», если вы хотите TextView в вертикальном центре родительского представления.
Источник
Google Android — это несложно
Добро пожаловать на форум сайта
Нет вертикального выравнивания текста в TextView
Нет вертикального выравнивания текста в TextView
Сообщение gtkgroup » 17 фев 2014, 11:16
Re: Нет вертикального выравнивания текста в TextView
Сообщение altwin » 17 фев 2014, 12:26
Re: Нет вертикального выравнивания текста в TextView
Сообщение gtkgroup » 17 фев 2014, 13:28
Re: Нет вертикального выравнивания текста в TextView
Сообщение парень » 17 фев 2014, 16:02
Бьем рекорды русских топов
Могу ответить на любые вопросы по маркетингу и развитию.
Re: Нет вертикального выравнивания текста в TextView
Сообщение altwin » 17 фев 2014, 20:46
Re: Нет вертикального выравнивания текста в TextView
Сообщение gtkgroup » 18 фев 2014, 16:03
Разобрался, может кому пригодится.
Во-первых, этот косяк проявляется не везде, а только в версии Андроид ICS.
Во-вторых для его устранения надо к тексту добавить непечатный символ
Выглядит это так:
Код
final String DOUBLE_BYTE_WORDJOINER = «\u2060»;
text.setText(text + DOUBLE_BYTE_WORDJOINER);
Проверяя рекомендацию, я обнаружил, что DOUBLE_BYTE_WORDJOINER увеличивает ширину текста, поэтому нашел ему замену в виде «\u200B» или «\uFEFF» (оба символа имеют нулевую ширину)
Теперь выравнивание по вертикали работает на все 100%
Источник: https://code.google.co…issues/detail?id=22493
Спасибо всем откликнувшимся, удачи!
- Список форумов
- Часовой пояс: UTC+03:00
- Удалить cookies
Создано на основе phpBB® Forum Software © phpBB Limited
Источник