Составить текст по: Составить текст: soft в помощь!

Составить текст: soft в помощь!

3 сервиса, которые помогут составить хороший текст на русском и английском языках

Многие люди в связи со своей работой и хобби составляют различные тексты: коммерческие предложения, статьи, лонгриды, посты и т.д. В наше активное время, когда все спешат, часто в текстах встречаются ошибки, опечатки и прочие проблемы. Англоязычные тексты не носителю языка составлять еще сложнее.
Сегодня мы рассмотрим 3 полезных сервиса, которые помогут в составлении текстов.
Больше полезной информации вы сможете найти в конце этой статьи и в мини-тренинге по текстовому контенту.

Узакова Ляйла

Основатель,
Партнер RQ

Glvrd.ru

Главред — сервис для улучшения русскоязычного текста.

  • По мнению Главред, сервис подходит для: рекламы, новостей, статей, сайтов, инструкций, писем и коммерческих предложений.

  • Помогает находить в тексте стоп-слова: языковой мусор, рекламные и журналистские штампы, признаки плохого синтаксиса и канцелярит. Без этих слов текст становится понятным, коротким и информативным. Главред называет это информационным стилем.

  • Обладает самой большой базой правил, стоп-слов, примеров и ссылок. Каждый месяц Главред пополняет новые правила и обновляет старые. Оценка по шкале Главреда показывает только долю стоп-слов (их соотношение к числу слов в тексте). Это не показатель качества текста.

  • Не проверяет орфографию и пунктуацию.

  • Содержит много советов и статей о тексте, редактуре, информационном стиле и рекламе. Можно подписаться на новые статьи в Telegram.

При переходе на сайт www.glvrd.ru, в рабочее поле можно поместить текст и сразу получить анализ по стоп-словам и синтаксису.

* Для увеличения изображения, кликните на него.

Orfogrammka.ru

Орфограммка — сервис для проверки правописания русскоязычного текста.

  • Проверяет текст на ошибки и опечатки, всё подробно объясняет, предлагает варианты исправления.

  • Помогает повысить уникальность и красоту текста. Подбирает синонимы и эпитеты к словам.

  • Раздел «Библиотека» содержит большое количество интересных и полезных материалов.

При переходе на сайт www.orfogrammka.ru, появится первая страница, на которой необходимо зарегистрироваться, затем перейти на страницу проверки текста.

* Для увеличения изображения, кликните на него.

В части «Грамотность», текст проверяется по параметрам:

  • орфография, грамматика, пунктуация, стилистика;
  • речевые и смысловые ошибки, сложные опечатки.

* Для увеличения изображения, кликните на него.

    В части «Красота», текст проверяется по параметрам:

    • увидеть и исправить тавтологию;
    • подобрать синонимы и эпитеты;
    • найти неблагозвучие;
    • узнать ударение сложных слов.

    * Для увеличения изображения, кликните на него.

      Hemingwayapp.com

      Писать как Хемингуэй. Сервис для улучшения англоязычного текста.

      • Программа «изучает» загруженный в неё текст, находит чрезмерно сложные слова и предлагает альтернативы, делит предложения в зависимости от сложности прочтения на 14 степеней удобочитаемости и маркирует их соответствующим образом.

      • Анализируемый текст маркируется разными цветами: желтым — слишком сложные для восприятия предложения, красным — если предложение перегружено, синим — слова, которые можно исключить, фиолетовым — когда можно найти более простую альтернативу, зеленым — использование страдательного залога.

      • Программа проводит оценку читабельности текста и выдает ряд данных: среднее время чтения, количество букв, символов, слов, предложений и параграфов.

      При переходе на сайт www. hemingwayapp.com, в рабочее поле можно поместить текст и сразу получить его анализ.

      * Для увеличения изображения, кликните на него.

      Как создавать потрясающий контент?

      Воспользуйтесь моими курсами и тренингами, где вы научитесь:
      1. Анализировать основной бизнес-продукт до продаж.
      2. Выстраивать эффективную воронку продаж и встраивать туда основной бизнес-продукт.
      3. «Подавать», презентовать ваши бизнес-продукты с помощью различного контента: фото, видео, графика, анимация, озвучка, текст, AR (дополненная реальность), интерактив.
      4. Работать с IT программами и приложениями, которые помогут создавать различный контент.

      Хотите знать больше?

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

      Как составить текст для объявления о вакансии

      Мы регулярно  пишем о том, как все больше компаний прибегают к социальным сетям для поиска кандидатов. Одни активно развивают бизнес-страницу и набирают подписчиков, публикуя вакансии вперемешку с полезным контентом. Другие публикуют предложения на личных страницах и специализированных группах. 

       

      Шаблоны работных сайтов для соцсетей, к сожалению, не подойдут: социальный рекрутинг предполагает куда более тонкую проработку подачи вашей вакансии для ЦА. Ведь на этих площадках вы преодолеваете не только конкуренцию с другими работодателями, но и с общим инфошумом ленты пользователя.

       

      На основе опыта и практических кейсов мы составили общие рекомендации для тех, кто:

      • только собирается рекрутить в соцсетях, не знает, с чего начать, и нуждается в примерах
      • искал кандидатов в соцсетях, но посты не «выстреливали», а значит важно найти возможные ошибки

       

      Видите цель? Идите к ней по модели AIDA 

       

      Определение целевой аудитории — это непаханое поле вопросов, которые нельзя оставить без ответа. Не забывайте: вы пишете не для себя, а для кандидатов на конкретные позиции.  

       

      Если не выделить отличительные черты этой аудитории в тоне и содержании объявления о вакансии, то есть риск, что не сработают два главных инструмента продвижения в соцсетях: безбюджетный нетворкинг или таргетинг, который не получится корректно настроить и окупить затраты. 

       

      Вот 4 базовых категории вопросов, с которыми портрет кандидата формируется точнее:

      • Кого вы хотите привлечь? Пропишите группы ЦА и индивидуализированные сегменты, если необходимо.
      • Что вы знаете о них? Какие есть особенности при работе с ними?
      • Они привыкли к неформальному стилю общения или на «вы»? 
      • Что им важно увидеть в вашей вакансии? Какие ее мотиваторы совпадают с вашим УТП? 

       

      Теперь по структуре вакансии: важно отразить все, что вы сможете, но при этом не «перетянуть» одеяло на образ компании (можно так захвалить свои достижения, что забудете про EVP, которое действительно важно увидеть соискателю). Не перегружайте публикацию: за большим массивом текста будет сложно увидеть важное.  

      Переходим к стилистике: рекомендуем писать по AIDA.

       

      1. У вас есть 3 секунды внимания потенциального кандидата: именно за это время он принимает решение читать дальше или пропустить пост. Поэтому в первую часть важно вынести то, чем вы сможете зацепить внимание — Attention.

      Не нужно писать о том, какая у вас крутая развивающаяся компания — начните с цепляющих формулировок. Варианты могут быть разные, зависит от вашей ЦА, например:

      2. Далее необходимо  вызвать интерес – Interest.

      Например, если ищете IT-специалиста, напишите про продукты, технологии, ваши фишки как компании. Если это позиция с вызовом, обозначьте этот вызов. Превратите наболевшее в фишку, юмор, которые заставят читать дальше и вызовут доверие на уровне эмоций. 

      3. Desire — это часть, где вы вызываете желание откликнуться, «подогреваете» кандидата: пишите про интересные задачи, коллектив, соцпакет и т.д. По сути, этот пункт — упаковка вашего индивидуального ценностного предложения, от которого невозможно отказаться 🙂

       

      4. Action – это последняя часть, немедленный призыв откликнуться. Напишите ваши контакты, как с вами связаться, есть ли дедлайн приема резюме.

      Если вы сможете создавать объявление, учитывая все эти особенности, но вероятность привлечь внимание сильно вырастет.

       

      Общие советы для написания HR-текстов

       

      В принципе, любая из рекомендаций ниже универсально подойдет под самые разные форматы текстов для HR-задач. Однако сейчас мы дополнили их примерами, которые особенно актуальны, если вы составляете описание вакансии.

       

       

      1. Пишите на языке ЦА

       

       

      Если вы обращаетесь к молодым специалистам, общайтесь неформально, на «ты», отвечая на их запрос. Им все равно сколько лет вы на рынке: важно то, что вы можете предложить им сейчас.

       

       

      2. Пишите кратко, информативно, без воды

       

       

      Люди сейчас окружены бесконечным потоком информации, от которой устают. Уважайте потенциального кандидата. Пишите так, чтобы он дочитал до конца и понял суть. Если вы привыкли писать сложными витиеватыми фразами, рекомендуем прогонять тексты через «Главред». Кроме того, здесь же вам подскажут, как заменить штампы на информативный текст. Например, вы пишете:

       

      «Мы приглашаем вас в крупную развивающуюся компанию»

       

      Сразу возникает кипа вопросов и срочная потребность в фактах: 

       

      Что значит крупная? Сколько человек в команде? Сколько продуктов? Чем определяете размер? «Развивающая» – это вообще про что, ведь все куда-то развиваются, если ищут людей?

       

       

      3. Пишите грамотно

       

       

      Избегайте грамматических и пунктуационных ошибок, иначе рискуете потерять очки авторитета из-за мелкой опечатки или типичного «тся/ться». Для самопроверки по пунктуации, грамматике и стилистике есть масса сервисов, например «Орфограммка», Text.ru, Advego.

       

       

      4. Не делайте перепосты ссылок

       

       

      Совсем кратко написать «есть вакансия» и дать ссылку на работный сайт – слабое решение, которое вряд ли доведет кандидата на внешний сайт.

      Пост обязательно должен содержать цепляющие детали по вакансии. Например,  если хотите вывести кандидата на карьерный сайт, то в публикации пропишите моменты хотя бы по пунктам AI (привлеките внимание и вызовите желание), а узнать больше соискатель сможет уже на страничке. 

       

       

      5. Проверяйте настройки доступа

       

       

      Если размещаете вакансию на своей странице, удостоверьтесь в настройках, что лента ваших публикаций доступна всем, а не только вашим друзьям. 

      Так вашу вакансию могут перепостить, тем самым увеличив охват и снизив затраты на продвижение. В случае активного нетворкинга и высоких охватов вы можете закрыть вакансию безбюджетно.

       

       

      6. Оформляйте текст аккуратно

       

       

      Пост должен легко читаться и органично выводить кандидата к ключевым моментами. Чтобы этого добиться, держитесь структуры: делите текст на абзацы, ставьте по необходимости знаки-разделители. 

       

      При этом не переборщите: убирайте капс и восклицательные знаки. Это дурной тон, пугающий читателей, т.к. им кажется, что ВЫ НА НИХ КРИЧИТЕ!!

      То же касается эмодзи и прочих символьных значков, обилие которых вызовет недоверие и ощущение несерьезного подхода компании к поиску кандидатов. 

       

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

       

      Пишите, сокращайте — марчарьте!

       

      Статья подготовлена Анастасией Черевко

      Выделение ввода текста с помощью Jetpack Compose

      Недавно мы запустили в Buffer новую функцию под названием «Идеи». С помощью Идеи вы можете хранить все свои лучшие идеи, корректировать их до тех пор, пока они не будут готовы, и помещать их прямо в очередь буфера. Теперь, когда идеи запущены в наших веб-приложениях и мобильных приложениях, у нас есть время поделиться некоторыми выводами, полученными в результате разработки этой функции. В этом сообщении блога мы подробно расскажем, как мы добавили поддержку выделения URL-адресов в Ideas Composer на Android с помощью Jetpack Compose.


      Мы начали внедрять Jetpack Compose в наше приложение в 2021 году — используя его в качестве стандарта для создания всех наших новых функций, постепенно внедряя его в существующие части нашего приложения. Мы создали всю функцию «Идеи» с помощью Jetpack Compose, поэтому наряду с более быстрой разработкой функций и большей предсказуемостью в состоянии нашего пользовательского интерфейса у нас было много возможностей для дальнейшего изучения Compose и получения дополнительной информации о том, как выполнить определенные требования в нашем приложении.


      В редакторе идей мы поддерживаем динамическую подсветку ссылок. Это означает, что если вы введете URL-адрес в текстовую область, то ссылка будет выделена — при нажатии на эту ссылку появится всплывающее окно «Открыть ссылку», которое при нажатии запускает ссылку в браузере.

      В этом сообщении мы сосредоточимся на реализации подсветки ссылок и на том, как этого можно добиться в Jetpack Compose с помощью компонуемого компонента TextField .


      Для компоновщика идей мы используем TextField

      , компонуемый для поддержки ввода текста. Этот компонуемый объект содержит аргумент visualTransformation , который используется для применения визуальных изменений к введенному тексту.

       Текстовое поле(
          ...
          визуальная трансформация = ...
      ) 

      Для этого аргумента требуется реализация VisualTransformation , которая используется для применения визуального преобразования к введенному тексту. Если мы посмотрим на исходный код этого интерфейса, мы заметим функцию фильтра, которая берет содержимое TextField и возвращает ссылку TransformedText , содержащую измененный текст.

       @Неизменный
      забавный интерфейс VisualTransformation {
          забавный фильтр (текст: AnnotatedString): TransformedText
      } 

      Когда дело доходит до этого измененного текста, мы должны предоставить реализацию, которая создает новый Ссылка AnnotatedString с внесенными нами изменениями.

      Затем это измененное содержимое объединяется в тип TransformedText и возвращается обратно в TextField для композиции.


      Чтобы мы могли определить и применить преобразования к содержимому нашего TextField , нам нужно начать с создания новой реализации интерфейса VisualTransformation , для которого мы создадим новый класс UrlTransformation . Этот класс реализует Аргумент VisualTransformation вместе с одним аргументом в виде Color . Мы определяем этот аргумент, чтобы мы могли передать ссылку на цвет темы для применения в нашей логике, поскольку мы собираемся выйти за пределы компонуемой области и не будем иметь доступа к нашей компонуемой теме.

       класс UrlTransformation(
          Вал цвет: Цвет
      ) : визуальное преобразование {
      } 

      После определения этого класса нам нужно реализовать функцию фильтра из

      VisualTransformation 9Интерфейс 0012. В этой функции мы собираемся вернуть экземпляр класса TransformedText — мы можем перейти к исходному коду этого класса и увидеть, что при создании экземпляра этого класса требуются два свойства.

       /**
       * Преобразованный текст со смещением смещения смещения
       */
      класс TransformedText(
          /**
           * Преобразованный текст
           */
          val текст: AnnotatedString,
          /**
           * Карта, используемая для двунаправленного сопоставления смещения исходного текста с преобразованным.
           */
          val offsetMapping: OffsetMapping
      ) 

      Оба эти аргумента являются обязательными, поэтому нам нужно указать значение для каждого при создании экземпляра класса TransformedText .

      • текст — это будет измененная версия текста, предоставленная функции фильтра
      • offsetMapping — согласно документации, это карта, используемая для двунаправленного сопоставления смещения исходного текста с преобразованным
       класс UrlTransformation(
          Вал цвет: Цвет
      ) : визуальное преобразование {
          переопределить забавный фильтр (текст: AnnotatedString): TransformedText {
              вернуть преобразованный текст (
                  . ..,
                  OffsetMapping.Identity
              )
          }
      } 

      Для аргумента offsetMapping мы просто передаем значение OffsetMapping.Identity — это предопределенное значение по умолчанию, используемое для интерфейса OffsetMapping , используемое, когда его можно использовать для преобразования текста, которое не изменяет количество символов. Когда дело доходит до текстового аргумента, нам нужно написать некоторую логику, которая будет принимать текущее содержимое, применять выделение и возвращать его как новую ссылку

      AnnotatedString для передачи в наш Ссылка TransformedText . Для этой логики мы создадим новую функцию buildAnnotatedStringWithUrlHighlighting . Это будет принимать два аргумента - текст, который должен быть выделен, а также цвет, который будет использоваться для выделения.

       забавная сборкаAnnotatedStringWithUrlHighlighting(
          текст: строка,
          цвет: Цвет
      ): AnnotatedString {
          
      } 

      Из этой функции нам нужно вернуть ссылку AnnotatedString , которую мы создадим, используя buildAnnotatedString . В этой функции мы начнем с использования операции добавления для установки текстового содержимого AnnotatedString .

       забавная сборкаAnnotatedStringWithUrlHighlighting(
          текст: строка,
          цвет: Цвет
      ): AnnotatedString {
          вернуть buildAnnotatedString {
              добавить (текст)
          }
      } 

      Далее нам нужно взять содержимое нашей строки и применить выделение ко всем присутствующим URL-адресам. Прежде чем мы сможем это сделать, нам нужно идентифицировать URL-адреса в строке. Обнаружение URL-адресов может варьироваться в зависимости от варианта использования, поэтому для простоты давайте напишем пример кода, который будет находить URL-адреса в заданном фрагменте текста. Этот код возьмет заданную строку и отфильтрует URL-адреса, предоставив в результате список строк URL-адресов.

       текст?.split("\\s+".toRegex())?.filter { слово ->
          Patterns.WEB_URL.matcher(word).matches()
      } 

      Теперь, когда мы знаем, какие URL-адреса находятся в строке, нам нужно применить к ним подсветку. Это будет в форме аннотированного строкового стиля, который применяется с помощью операции addStyle.

       fun addStyle(style: SpanStyle, start: Int, end: Int) 

      При вызове этой функции нам нужно передать SpanStyle , который мы хотим применить, вместе с начальным и конечным индексом, которым должен быть этот стиль применительно к. Мы начнем с вычисления этого начального и конечного индексов. Для простоты мы будем предполагать, что в нашей строке есть только уникальные URL.

       текст?.split("\\s+".toRegex())?.filter { слово ->
          Patterns.WEB_URL.matcher(word).matches()
      }.для каждого {
          val startIndex = text.indexOf(it)
          val endIndex = startIndex + it.length
      } 

      Здесь мы находим начальный индекс с помощью функции indexOf , которая даст нам начальный индекс данного URL. Затем мы будем использовать этот начальный индекс и длину URL-адреса для расчета конечного индекса. Затем мы можем передать эти значения соответствующим аргументам для функция addStyle .

       текст?.split("\\s+".toRegex())?.filter {слово ->
          Patterns.WEB_URL.matcher(word).matches()
      }.для каждого {
          val startIndex = text.indexOf(it)
          val endIndex = startIndex + it.length
          добавить стиль(
              старт = начальный индекс,
              конец = конецИндекс
          )
      } 

      Далее нам нужно предоставить SpanStyle , который мы хотим применить к данному диапазону индексов. Здесь мы хотим просто выделить текст, используя предоставленный цвет, поэтому мы передадим значение цвета из аргументов нашей функции в качестве аргумента цвета для Функция SpanStyle .

       текст?.split("\\s+".toRegex())?.filter {слово ->
          Patterns.WEB_URL.matcher(word).matches()
      }.для каждого {
          val startIndex = text.indexOf(it)
          val endIndex = startIndex + it.length
          добавить стиль(
              стиль = SpanStyle(
                  цвет = цвет
              ),
              старт = начальный индекс,
              конец = конецИндекс
          )
      }
       

      Теперь у нас есть полная функция, которая будет принимать предоставленный текст и выделять любые URL-адреса, используя предоставленные Ссылка на цвет .

       забавная сборкаAnnotatedStringWithUrlHighlighting(
          текст: строка,
          цвет: Цвет
      ): AnnotatedString {
          вернуть buildAnnotatedString {
              добавить (текст)
              текст?.split("\\s+".toRegex())?.filter {слово ->
                  Patterns.WEB_URL.matcher(word).matches()
              }.для каждого {
                  val startIndex = text.indexOf(it)
                  val endIndex = startIndex + it.length
                  добавить стиль(
                      стиль = SpanStyle(
                          цвет = цвет,
                          textDecoration = TextDecoration.None
                      ),
                      начало = начальный индекс, конец = конечный индекс
                  )
              }
          }
      } 

      Затем нам нужно вернуться в наш класс UrlTransformation и передать результат вызова функции buildAnnotatedStringWithUrlHighlighting для аргумента TransformedText .

       класс UrlTransformation(
          Вал цвет: Цвет
      ) : визуальное преобразование {
          переопределить забавный фильтр (текст: AnnotatedString): TransformedText {
              вернуть преобразованный текст (
                  buildAnnotatedStringWithUrlHighlighting (текст, цвет),
                  OffsetMapping. Identity
              )
          }
      } 

      Теперь, когда наша реализация UrlTransformation завершена, мы можем создать ее экземпляр и передать ссылку для аргумента visualTransformation составного объекта TextField . Здесь мы используем желаемый цвет из нашего эталона MaterialTheme , который будет использоваться при выделении URL-адресов в нашем содержимом TextField .

       Текстовое поле(
          ...
          визуальная трансформация = URL-трансформация (
              MaterialTheme.colors.secondary)
      ) 

      С учетом вышеизложенного у нас теперь есть поддержка динамической подсветки URL-адресов в нашем компонуемом TextField . Это означает, что теперь всякий раз, когда пользователь вставляет URL-адрес в композитор для идеи, мы идентифицируем его как URL-адрес, выделяя его вторичным цветом из нашей темы.

      В этом посте мы узнали, как применить динамическую подсветку URL-адресов к содержимому составного объекта TextField . В следующем посте мы рассмотрим, как мы добавили всплывающее окно «Открыть ссылку», когда URL-адрес нажимается в области ввода композитора.

      Недостающие фрагменты выравнивания текста в Compose Text | Автор Akash Khunt

      Фото Росса Снеддона на Unsplash

      Я читаю и изучаю Jetpack Compose с июня 2021 года, но из-за моей работы над KMM я не мог тратить время или активно писать код Jetpack Compose. Но с прошлого месяца все изменилось, и теперь я больше сосредоточен на Jetpack Compose.

      Недавно я разрабатывал пользовательский интерфейс, и мне нужно было создать компонуемый текст с рамкой, где текст будет в центре. Сначала это звучало очень просто, исходя из старой системы View, но это заставило меня потратить больше часа на выяснение того, что это не работает так же, как раньше работало с TextView в старой системе View.

      Редактировать : Проведя небольшое исследование, я обнаружил, что существует функция модификатора, называемая Modifier. wrapContentHeight(align: Alignment.Vertical) , которая позволяет нам выравнивать текстовое содержимое по центру внутри Text, компонуемого любой высоты. . Хотя с этим мы можем достичь нашей цели по центрированию текста, но он все еще кажется несколько непересекающимся, поскольку Горизонтальное выравнивание обеспечивается textAlign (которое является свойством в Text composable) и Вертикальное выравнивание обеспечивается с помощью wrapContentHeight (которая является функцией модификатора) .

      Выровненный по центру текст, компонуемый с помощью Modifier.wrapContentHeight() Предварительный просмотр, созданный с использованием CenterAlignedText

      Чтобы понять проблему, с которой я столкнулся, давайте сначала рассмотрим очень небольшой пример, как показано на снимке экрана ниже: компоненты

      Как вы можете видеть на скриншоте выше, мне нужно было окаймить Text composables с высотой, такой же, как у родителя Row , и требуется выровнять текст по центру. Поэтому для достижения желаемого выравнивания я сначала попытался использовать свойство TextStyle.textAlign вместе со значением TextAlign.Center . Но после обновления предварительного просмотра я увидел, что текстовое содержимое было выровнено только по центру по горизонтали, а не по центру в обоих направлениях 🤔 т.е. (по горизонтали и по вертикали), как показано ниже:

      Результат после применения textAlign = TextAlign.Center 9от 0069 до TextStyle

      Возможно, некоторые из вас, возможно, уже подумали, что я мог бы использовать Modifier.align() для достижения желаемого поведения, но это не работает в текущем варианте использования, потому что компонуемый текст уже с максимальной шириной и высотой, поэтому Modifier.align здесь не помогает. 😅

      Это заставило меня переосмыслить, как я мог добиться того же в старой системе View. В итоге я написал пример кода, как показано ниже:

      Реализация желаемого поведения в старой системе View

      Как вы, возможно, уже знаете, для достижения того же в системе View требуется атрибут android:gravity с флагом center . Если вам интересно, ниже приведен список всех флагов, которые вы можете использовать в качестве значения атрибута gravity . И лучшая часть этого атрибута заключалась в том, что вы можете использовать побитово или «|» , чтобы использовать несколько флагов вместе, например. «сверху|в центре» .

      список поддерживаемых флагов для гравити атрибут

      Глядя на все вышеперечисленные флаги, я подумал о проверке всех поддерживаемых значений TextAlign . Итак, я открыл класс TextAlign , и перечисленных вариантов оказалось очень мало, что выглядело как 1-D выравнивание , а комментарий выше Center определенно вводил в заблуждение 😅 (поскольку он просто делает выравнивание по центру только в горизонтальном направлении ).

      TextAlign поддерживаемые значения

      Посмотрев на это, я наконец понял, что со своей стороны я не делал ничего неправильного, но в документации есть небольшая проблема, т. е. 9Функция выравнивания по центру 0068 работает не так, как можно было бы ожидать . Это также заставило меня задуматься обо всех поддерживаемых значениях в Modifier.align() . Поэтому я проверил файл класса Alignment и был рад увидеть, что они даже разделили разные поддерживаемые значения на разные разделы, такие как 2D Alignments, 1D Vertical и 1D Horizontal , которые должны быть связаны с поддержкой выравнивания 1D в ColumnScope и RowScope 🙂 . В идеале я хотел бы видеть все значения, поддерживаемые в Alignment в TextAlign , но, к сожалению, это не так, по крайней мере, на данный момент.

      Выравнивание Поддерживаемые значения

      Наконец, чтобы достичь желаемого результата, я закончил тем, что обернул компонуемый текст в родительский компонуемый блок , который позаботится как о выравнивании, так и о рисовании границы. Исправление было простым, но перенос его в другой компонуемый объект казался излишним, даже несмотря на то, что штраф за выполнение этого в мире компоновки может быть незначительным по сравнению со старой системой просмотра.

      Обтекание текста компонуемым блоком для достижения желаемого поведения

      Когда я копался в том, как именно работает атрибут гравитации для TextView , я закончил тем, что просмотрел содержимое TextView.setGravity() и увидел интересную константу с именем НЕИЗВЕСТНО_СКУЧНОЕ .

      TextView.SetGravity() реализация и UNKNOWN_BORING использование

      Первая мысль, которая пришла мне в голову, была 9 Илона Маска.0068 The Boring Company , который поначалу звучал очень странно, когда я услышал его несколько лет назад, но после того, как я узнал, чем они занимаются, это обрело смысл. Поэтому мне стало любопытно, что может быть причиной в этом контексте.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *