Как можно согнуть макет Android в XML? - PullRequest
2 голосов
/ 21 октября 2011

Как вы, наверное, знаете, Mozilla стремится сделать мобильный интерфейс на fennec как собственный Java / Android UI.

Это включает в себя использование XML-файлов макета, которые по умолчанию используют такие вещи, как

<TextView
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:text="@string/text_a"
    />

с разрешением @string/text_a в text_a в файле strings.xml с l10n.

Мы хотели бы использовать что-то еще, и мне интересно, если / как мы можем подключить это вXML-файлы.

Итак, я хотел бы получить указатели на исходный код Android, который фактически выполняет поиск строк, например.

И у меня есть три идеи о том, как что-то подключитьcustom, которые не проверены фактами, в основном потому, что мне еще не удалось найти код, который все еще работает:

  1. @moz-l10n/text_a, с реализованным на Java сервисом, возвращающим значения для этого ресурсанаберите
  2. moz:l10n="text_a" пользовательский атрибут, который будет подключен для последующей обработки созданных виджетов
  3. подклассов виджетов, которые мы хотим локализовать в нашей схеме, добавив (2)

Я надеюсь, что здесь есть люди, которыехорошая идея, чтобы указать мне хорошие пути или сбить их.

PS: я был бы признателен за отсутствие велосипедного сарая о том, хороша ли схема Android l10n или нет.

1 Ответ

2 голосов
/ 21 октября 2011

Итак, я бы хотел получить указатели на исходный код Android, который фактически выполняет поиск строк, например.

android.content.res.Resources делегатов для android.content.res.AssetManager и метода getResourceText(). Это, в свою очередь, приводит к нативному методу loadResourceValue(). И ты сам по себе оттуда ...: -)

1) @ moz-l10n / text_a, с внедренным Java-сервисом, возвращающим значения для этого типа ресурса

Если вы не собираетесь предварительно обрабатывать файлы искусственных ресурсов с помощью собственных инструментов сборки, генерируя допустимые файлы ресурсов Android в каталоге res/, вы не можете изобретать новые типы ресурсов (например, @moz-10n). Для этого потребуются модификации инструментов сборки и прошивки.

2) moz: l10n = "text_a" пользовательский атрибут, который будет подключен к пост-обработке сгенерированных виджетов

3) подкласс виджетов, которые мы хотим локализовать с помощью нашей схемы, добавив 2)

Ваш вариант № 3 определенно возможен и довольно типичен при создании пользовательских виджетов. Вполне возможно, что методы для этого (обычно включающие файл res/values/attrs.xml с ресурсом declare-styleable) могут быть каким-то образом применены к стандартному классу виджетов, но я никогда не видел, чтобы это было сделано. Конечно, вы всегда можете выполнить предварительную обработку, как при выполнении опции №1.

...