J'ai une vue PieTimer personnalisée dans un projet de bibliothèque Android.
package com.mysite.android.library.pietimer;
public class PieTimerView extends View {
...
Je dispose également d'un fichier d'attributs XML que j'utilise dans mon PieTimer.
TypedArray a = context.obtainStyledAttributes(attrs,
R.styleable.PieTimerView);
Le fichier XML stylisable ressemble à ceci
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="PieTimerView">
<attr name="max_size" format="dimension" />
<attr name="start_angle" format="string" />
<attr name="start_arc" format="string" />
<attr name="ok_color" format="color" />
<attr name="warning_color" format="color" />
<attr name="critical_color" format="color" />
<attr name="background_color" format="color" />
</declare-styleable>
</resources>
J'ai le PieTimer dans un fichier de mise en page pour un projet qui utilise la bibliothèque, comme ceci
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/root" android:layout_gravity="center_horizontal"
xmlns:app="http://schemas.android.com/apk/res/com.mysite.android.library.myapp"
xmlns:pie="com.mysite.library.pietimer"
>
<com.mysite.library.pietimer.PieTimerView
pie:start_angle="270"
pie:start_arc="0"
pie:max_size="70dp"
pie:ok_color="#9798AD"
pie:warning_color="#696DC1"
pie:critical_color="#E75757"
pie:background_color="#D3D6FF"
android:visibility="visible"
android:layout_height="wrap_content" android:id="@+id/clock"
android:layout_width="wrap_content"
android:layout_alignParentRight="true">
</com.mysite.library.pietimer.PieTimerView>
Auparavant, j'utilisais le xmlns:app
comme espace de nom pour les attributs tels que app:ok_color
mais lorsque j'ai fait de mon projet un projet de bibliothèque et que j'ai une version gratuite et complète mettant en œuvre la bibliothèque, j'ai constaté que cela ne fonctionnait plus et j'ai donc ajouté l'espace de nom pie.
La PieTimerView s'affiche mais les attributs ne fonctionnent pas, ils utilisent la valeur par défaut (ce qui ne se produisait pas auparavant), il y a donc un conflit d'espace de noms.
Quelle est la manière correcte de procéder ?
0 votes
Avez-vous trouvé une meilleure solution ?
0 votes
Dites-moi qu'il existe une meilleure façon de procéder. J'ai le même problème en incluant des publicités admob dans un projet de bibliothèque.
0 votes
Bonne question. Je suis également confronté au même problème. Tous sont les bienvenus pour donner leurs idées.
0 votes
@SIVAKUMAR.J - JRaymond a donné la bonne réponse à cette question (c'est la réponse la mieux notée pour cette question au moment où j'écris ce commentaire).