Как заставить работать пользовательские шрифты PixlUI для Android?

Я пытаюсь использовать PixlUI для реализации пользовательских шрифтов в моем приложении для Android, используя Ксамарин. Я выполнил следующие шаги:

  1. В мое основное решение добавлена ​​новая библиотека привязок Android Java.
  2. Добавлен pixlui-1-0-5. jar в папку jars
  3. В свойствах pixlui-1-0-5.jar я установил для параметра «включить в развертывание» значение true.
  4. Протестировал мою новую библиотеку привязок Android Java, и она отлично работает без ошибок.
  5. В основном проекте я добавил свой шрифт в папку assets/fonts.
  6. В ссылках я добавил библиотеку привязки pixlUI.
  7. В моем main.axml я разместил этот код:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:pixlui="http://schemas.android.com/apk/com.neopixl.pixlui"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="10dp"
    android:paddingRight="10dp"
    android:screenOrientation="portrait">
    
    <com.neopixl.pixlui.components.textview.TextView
    android:id="@+id/textViewpixl"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world"
    pixlui:copyandpaste="false"
    pixlui:clearclipboardcontent="true"
    pixlui:typeface="Lato-Light.ttf" 
    android:layout_below="@id/btnRebate"
     />
    </RelativeLayout>
    

Когда я создаю свой проект, он завершается с ошибкой 10, все ссылки на «уже содержат определение для ...» с ошибкой cs0102 внутри файлов pixlUI.

Пример: .../pixlUI/obj/Debug/generated/src/Com.Neopixl.Pixlui.Components.Edittext.IEditTextBatchListener.cs(59,59): ошибка CS0102: тип Com.Neopixl.Pixlui.Components.Edittext.AddNewCharEventArgs' already contains a definition forp0' (CS0102) (pixlUI)

Я пытался устранить эту проблему, но, похоже, это проблема с pixlUI или конфликт с чем-то, что уже есть в моем решении. Кто-нибудь знает, как это решить?


person cheriana    schedule 19.08.2014    source источник


Ответы (1)


Прежде всего, вы должны изменить действие сборки для pixelui.jar на EmbeddedJar.

Затем вам нужно добавить следующее в файл Metadata.xml вашей привязки:

<!-- Bindings added to rename event parameters  -->
<attr path="/api/package[@name='com.neopixl.pixlui.components.edittext']/interface[@name='EditTextBatchListener']/method[@name='addNewChar']/parameter[@name='p0']" name="name">editText</attr>
<attr path="/api/package[@name='com.neopixl.pixlui.components.edittext']/interface[@name='EditTextBatchListener']/method[@name='deleteKeyboardButton']/parameter[@name='p0']" name="name">editText</attr>
<attr path="/api/package[@name='com.neopixl.pixlui.components.edittext']/interface[@name='EditTextBatchListener']/method[@name='deleteKeyboardButton']/parameter[@name='p1']" name="name">emptyText</attr>

<attr path="/api/package[@name='com.neopixl.pixlui.components.edittext']/interface[@name='EditTextFocusListener']/method[@name='loseFocus']/parameter[@name='p0']" name="name">editText</attr>
<attr path="/api/package[@name='com.neopixl.pixlui.components.edittext']/interface[@name='EditTextFocusListener']/method[@name='requestFocus']/parameter[@name='p0']" name="name">editText</attr>

Перестройте свои привязки, после чего вы сможете использовать их в своем приложении для Android.

Вот скриншот из примера проекта:

Снимок экрана PixlUI на Xamarin

person Kiliman    schedule 20.08.2014
comment
Это сработало отлично, спасибо! Не было упоминания о добавлении чего-либо в файл metadaa.xml на github PixlUI, поэтому я пропустил эту часть. - person cheriana; 20.08.2014
comment
На самом деле это специфично для Xamarin. Процесс связывания в значительной степени берет типы Java и создает соответствующие типы C#. Проблема в том, что иногда автоматизированный процесс не все обрабатывает правильно. Файл Metadata.xml дает вам больше контроля над тем, как генерируются типы C#. - person Kiliman; 20.08.2014