【发布时间】:2017-07-01 09:29:32
【问题描述】:
我需要在 Android 应用程序中构建一个对话框,用户可以在其中选择几种预定义颜色中的一种。我发现this color picker 非常适合我的需求。 现有 Android 项目中的集成不是问题,但我无法使其正常工作。我有问题:
对话框正确显示,包括 ColorPickerPlatte。但是,我无法更改所选颜色。我是否需要自己使用可传递给 init 函数的事件处理程序来执行此操作?
如何检索当前选择的颜色?
这是我所做的:
我创建了一个布局,并将其设置为对话框的视图。在这个视图中,我添加了一个 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()
我在上述链接的项目网站上找不到任何信息。也许是因为它太容易/太明显了,但任何帮助都将不胜感激!
【问题讨论】:
-
我认为你没有初始化监听器。根据project,需要初始化一个监听器。
colorPickerPalette.init(colors.length, columns, mOnColorSelectedListener); -
没错,我没有初始化它,因为我不需要执行一些关于颜色变化的逻辑。此外,我希望插件能够处理颜色变化,而无需我实现它。但是,如果我必须这样做:你知道我必须如何初始化监听器吗?
-
你不需要一个监听器来改变颜色吗?要初始化侦听器,请将以下内容添加到您的代码中。
colorPickerPalette.init(colors.length, columns, mOnColorSelectedListener); -
如果我没有错过任何东西,我想我会的。但是 1)为什么我需要自己处理颜色变化?使用这个组件的每个人都需要编写相同的代码(=> 它应该由组件本身处理)。 2)听者应该是什么样子,我。例如,如何实现颜色更改?
-
组件中存在颜色变化。您需要做的就是初始化监听器。当您初始化侦听器时,该组件开始在应用程序中实现颜色更改。如果侦听器未初始化,则不会实现颜色更改。
标签: android color-picker