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

Опитвам се да използвам PixlUI, за да внедря персонализирани шрифтове в моето приложение за Android, използвайки Xamarin. Следвах следните стъпки:

  1. Добавих нова Android Java Bindings Library към моето основно решение
  2. Добавен pixlui-1-0-5. jar към папката jars
  3. Под свойствата за pixlui-1-0-5.jar съм задал „включване в разгръщането“ на true
  4. Тествах моята нова Android Java Bindings Library и тя се изгражда добре без грешки
  5. Под основния проект добавих своя шрифт към папката активи/шрифтове
  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 в PixlUI github, така че пропуснах тази част. - person cheriana; 20.08.2014
comment
Това всъщност е специфично за Xamarin. Процесът на обвързване до голяма степен взема типовете Java и създава подходящите типове C#. Проблемът е, че понякога автоматизираният процес не обработва всичко правилно. Файлът Metadata.xml ви дава повече контрол върху това как се генерират C# типовете. - person Kiliman; 20.08.2014