Android Замените «…» на многоточие


306

Поскольку AVD tools 16, я получаю это предупреждение:

Replace "..." with ellipsis character (..., …) ?

в моем strings.xml

на этой линии

 <string name="searching">Searching...</string>

Как мне заменить ...? Это буквально &#8230;?

Может ли кто-нибудь объяснить эту кодировку?


В качестве заметки я заметил, что некоторые из собственных переведенных строковых файлов Android используют ... сам по себе, а не сущность Unicode. Учитывая, что файлы Android XML обычно кодируются в UTF-8, в любом случае, я не вижу причин не использовать сам символ, а не потенциально-эзотерическую сущность Unicode, тем более что большинство программ обработки текста в наши дни поддерживают автозамену "..." в " … »(Microsoft Word делает это по умолчанию, последний раз я проверял).
JAB

Это на самом деле три точки (ASCII 46 / 0x26)? Или ASCII 133 (один символ)?
Питер Мортенсен

1
В ответе на другой вопрос SO есть лучшее объяснение, чем «Измените… на Unicode, потому что это лучше». stackoverflow.com/a/27984145/973919 Короче говоря, он предотвращает разделение трех точек на многострочном тексте (показаны только одна или две точки), а в некоторых типографиях выглядит плохо, когда видны три точки.
xarlymg89

Ответы:


538

&#8230;это Unicode для " ... ", так что просто замените его. Лучше иметь один символ / символ, чем три точки.


41
Почему это "лучше"? Это усложняет вещи при передаче текста переводчикам. Можем ли мы как-то убить это глупое предупреждение? Спасибо
Свиньястер

25
@swinefeaster приятно знать :) но так как они подлежат оплате, они также обучаемы :)
WarrenFaith

25
@swinefeaster «лучше» отчасти потому, что он не ломается («...» может обернуться, например, во второй период), и теоретически языки могут отображать их по-разному (многие азиатские языки помещают их в середину, и они шире (соответствует ширине символа)). Неразрывная функция полезна везде, хотя я не знаю, как Android корректно отображает их на других языках, и я не знаю символов UTF для этого.
Groxx

12
Наличие «...» вызывает проблемы доступности. Android Talkback читает «Загрузка ...» как «Загрузка 3 периода»
Мохаммад Шабаз Муса

14
Кажется, мой комментарий не был ясным. Использование «loading ...» (3 точки) заставляет Talkback сказать «загрузка 3 периода» с помощью «Loading & # 8230;» (многоточие) заставляет Talkback сказать «Загрузка» [что хорошо ..] Итак, мы должны всегда использовать многоточие
Мохаммад Шабаз Муса

15

Короче говоря, просто поставить &#x2026;на место ...

Ссылка на список символов XML

  • Посмотрите на столбец Юникод HTML для строки с именем hellip

5
Сначала я задавался вопросом, почему вы использовали, &#x2026;когда в предупреждении Eclipse говорится, что использовать, &#8230;но ваша ссылка действительно отвечает. А именно, что x означает шестнадцатеричное значение, а 8230 в десятичном виде - это 2026 в шестнадцатеричном.
k2col

куда положить это & ​​# x2026 любое место для этого.
Тушар Пандей

@ TusharPandey - если ваш код <string name = "search"> Searching ... </ string>, он будет выглядеть примерно так: <string name = "search"> Searching & # x2026 </ string>
Jadeye

13

Если вы используете Eclipse, вы всегда можете сделать следующее:

  • Щелкните правой кнопкой мыши на предупреждение
  • Выберите «Быстрое исправление» ( по умолчанию ярлык Ctrl+ 1)
  • Выберите «Заменить предложенными символами»

Это должно заменить ваши три точки подходящим символом Unicode для многоточия.

Просто примечание: последняя версия ADT (21.1) иногда не выполняет операцию замены должным образом, но более ранние версии не имели проблем с этим.

Это персонаж:


Это сработало для меня! Однако ничего «визуального» не произошло, кроме исчезнувшего предупреждения, и я запускаю ADT 22.2.1. Но я думаю, вот как это работает :)
ymerdrengene

Не работал для меня Eclipse предложил мне (я не знаю почему) окружить тег <resources> новым тегом <element>.
Леонардо Раэле

Eclipse сделает это когда-нибудь, если вы точно не выделите нужную область. Я выделяю и пытаюсь быстро исправить два или три раза, прежде чем он действительно сделает правильное предложение.
Майкл Сили

10

Решение вашей проблемы:

Go to Window -> Preferences -> Android -> Lint Error Checking

И искать " многоточие ". Измените уровень предупреждения на « Информация » или « Игнорировать ».


8
Эти предложения имеют смысл. Просто игнорировать их - это всего лишь решение, если вы действительно уверены, что делаете. В этом случае замена имеет смысл, поэтому игнорировать предупреждение нехорошо.
Александр Пача

Спасибо! Как раз то, что я искал. И это место, где можно делать разные связанные вещи (мне не нужен компьютер, чтобы сказать мне, как пишется, пишется с большой буквы или пунктуируется). Очень полезно!
Скотт Биггс

3
это не хороший вариант игнорировать предупреждения. Вы должны исправить предупреждения для лучших результатов.
Дипак

1
@ ScottBiggs, чтобы быть справедливым, если компьютер говорит вам, что вы написали что-то, написали с заглавной буквы или пунктуации что-то неправильно, то вы должны это исправить. Lints полезны в этом отношении, я советую не отключать их.
EpicPandaForce

3

Этот ответ косвенно связан с этим вопросом:

В моем случае textView1.setTextView("done&#8230");показывался какой-то ящик / китайский иероглиф. Позже я проверил, fileformat.infoчто представляет собой значение, и обнаружил, что это символ Хань. Так что делать? Я искал «символ эллипса fileformat.info», и тогда все стало ясно, как только я увидел, что его значения;

UTF-16 (hex) 0x2026 (2026)

UTF-16 (decimal) 8,230

Таким образом, у вас есть несколько доступных кодировок для представления символа (например, 10 в десятичном виде представлен как A в гекса), поэтому очень важно знать, когда вы пишете символ Unicode, как принимающая функция декодирует его. Если он декодируется как десятичное значение, то вы должны указать десятичное значение, если оно принимает шестнадцатеричное значение, то вы должны указать шестнадцатеричное.

В моем случае функция setTextView () принимает десятичное закодированное значение, но я предоставлял шестнадцатеричные значения, поэтому я получал неправильный символ.



0

Лучше не игнорировать это, как мне кажется, как мне кажется. Используйте Android Studio, чтобы исправить это (вместо фактического ввода кода символа), и инструмент заменит три точки трехточечным символом юникода . Не будет путать переводчиков и т. Д.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.