2017-07-01 94 views
1

我需要在Android应用程序中建立一个对话框,用户可以在其中选择几种预定义颜色中的一种。我找到了适合我需求的this color picker。 在现有的Android项目中的集成不是一个问题,但我没有得到它的正常工作。我有问题:Android ColorPickerPalette的使用

  1. 对话框显示正确,包括ColorPickerPlatte。但是,我无法更改所选颜色。我是否需要通过使用可以传递给init函数的事件处理程序来自己完成此操作?

  2. 如何检索当前选择的颜色?

这里是我做过什么:

我创建了一个布局,我设置为对话视图。在此视图中,我添加了一个ColorPickerPalette如下:

<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" /> 

在我建立包括ColorPickerPalette对话框下一步骤。我使用以下(Kotlin)代码执行此操作:

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() 

我在上面链接的项目网站上找不到任何信息。也许因为它太容易/明显,但任何帮助,将不胜感激!

+0

我想你并没有初始化Listener。根据[project](http://www.materialdoc.com/color-picker/#),你需要初始化一个监听器。 'colorPickerPalette.init(colors.length,columns,mOnColorSelectedListener);' – Abhi

+0

准确地说,我没有初始化它,因为我不需要在颜色变化上执行一些逻辑。此外,我希望插件能够处理颜色变化,而不必实施它。但是,如果我必须这样做:你知道我如何初始化侦听器吗? – Patrick

+0

难道你不需要听众的颜色变化?要初始化侦听器,请将以下内容添加到您的代码中。 'colorPickerPalette.init(colors.length,columns,mOnColorSelectedListener);' – Abhi

回答

-1

我不知道你是否回答了这个问题,但我刚刚通过使用下面的代码出去工作。

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

.. –