2017-07-01 1 views
1

Je dois créer une boîte de dialogue dans une application Android dans laquelle un utilisateur peut sélectionner l'une des couleurs prédéfinies. J'ai trouvé this color picker qui convient bien à mes besoins. L'intégration dans le projet Android existant n'était pas un problème mais je n'arrive pas à le faire fonctionner correctement. J'ai des problèmes:Utilisation de Android ColorPickerPalette

  1. La boîte de dialogue s'affiche correctement, y compris le ColorPickerPlatte. Cependant, je ne peux pas changer la couleur sélectionnée. Ai-je besoin de le faire moi-même en utilisant le gestionnaire d'événements qui peut être passé à la fonction init?

  2. Comment puis-je récupérer la couleur actuellement sélectionnée?

Voici ce que je faisais:

J'ai créé une mise en page que je reproduis en vue de la boîte de dialogue. Dans ce point de vue, j'ai ajouté un ColorPickerPalette comme suit:

<com.android.colorpicker.ColorPickerPalette xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/color_picker" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_gravity="center" 
    android:gravity="center" 
    android:padding="16dp" /> 

Dans l'étape suivante, je mis en place la boîte de dialogue, y compris le ColorPickerPalette. Je le fais avec le code (Kotlin) suivant:

val SELECTABLE_COLORS = intArrayOf(Color.BLACK, Color.GREEN, Color.RED, Color.BLUE) 
val inflater = LayoutInflater.from(context) 
val dialogView = inflater.inflate(R.layout.add_activity_form, null) 
val colorPickerPalette = dialogView.findViewById(R.id.color_picker) as ColorPickerPalette 
colorPickerPalette.init(SELECTABLE_COLORS.size, 4, {}) 
colorPickerPalette.drawPalette(SELECTABLE_COLORS, SELECTABLE_COLORS[0]) 
val dialogBuilder = AlertDialog.Builder(context) 
dialogBuilder 
      .setTitle(R.string.dialog_create_activity_title) 
      .setCancelable(false) 
      .setView(dialogView) 
      .setNegativeButton(R.string.cancel, null) 
      .setPositiveButton(R.string.add, null) 
return dialogBuilder.create() 

Je n'ai trouvé aucune information sur le site du projet ci-dessus. Peut-être parce que c'est trop facile/évident mais n'importe quelle aide serait appréciée!

+0

Je pense que vous n'avez pas initialisé l'écouteur. Selon le [projet] (http://www.materialdoc.com/color-picker/#), vous devez initialiser un écouteur. 'colorPickerPalette.init (colors.length, columns, mOnColorSelectedListener);' – Abhi

+0

Exactement, je ne l'ai pas initialisé car je n'ai pas besoin d'exécuter une certaine logique sur le changement de couleur. De plus, je m'attendais à ce que le plugin gère le changement de couleur sans que je doive l'implémenter. Cependant, si je dois le faire: Savez-vous comment je dois initialiser l'auditeur? – Patrick

+0

N'auriez-vous pas besoin d'un écouteur pour un changement de couleur? Pour initialiser l'écouteur, ajoutez ce qui suit à votre code. 'colorPickerPalette.init (colors.length, columns, mOnColorSelectedListener);' – Abhi

Répondre

-1

Je ne sais pas si vous avez répondu à la question, mais je viens de sortir au travail en utilisant le code ci-dessous.

colorPickerPalette.init(colors.length, 5, new ColorPickerSwatch.OnColorSelectedListener() { 
      @Override 
      public void onColorSelected(int color) { 
       colorPickerPalette.drawPalette(colors, color); 
       //more code 
      } 
     }); 
+0

formater le code s'il vous plaît .. –