【发布时间】:2016-07-18 20:19:40
【问题描述】:
我有一个应用程序,用户可以在其中使用颜色选择器或预定义按钮来更改引用的背景。我想让用户可以通过长按来更改预定义按钮的颜色,然后出现一个颜色选择器,用户现在可以选择将任何颜色保存到按钮。
由于某种原因,颜色选择器侦听器方法在我的RecyclerView 适配器中不起作用。颜色选择器侦听器应该给我当前选择的颜色。我已经用Log.d("TAG", ""+color); 对其进行了测试
我没有得到任何值
用于背景颜色的 RecyclerView 适配器的 Viewholder:
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener, ColorPickerDialogFrag2.ColorPickerDialogListener {
public ImageButton colorButton;
public ViewHolder(View itemView) {
super(itemView);
this.colorButton = (ImageButton) itemView.findViewById(R.id.colorbutton);
itemView.setOnClickListener(this);
itemView.setOnLongClickListener(this);
}
@Override
public void onClick(View v) {
int position = getLayoutPosition();
MainActivity.relativeLayout.setBackgroundColor(Color.parseColor((mColorButtons.get(position).getColor())));
PreferenceManager.getDefaultSharedPreferences(App.getAppContext()).edit().putInt(App.BACKGROUND, Color.parseColor(mColorButtons.get(position).getColor())).apply();
//ColorPicker for customizing colors for buttons
@Override
public boolean onLongClick(View v) {
ColorPickerDialogFrag2 cp = ColorPickerDialogFrag2.newInstance(6, Color.YELLOW);
cp.setStyle(android.support.v4.app.DialogFragment.STYLE_NORMAL, R.style.AppTheme);
cp.show(fragmentManager,"d");
return false;
}
@Override
public void onPreviewColorChanged(int dialogId, int color) {
//color is the current color from the colorpicker
Log.d("TAG", ""+color);
MainActivity.mEditText.setBackgroundColor(color);
}
@Override
public void onColorSelected(int dialogId, int color) {
Log.d("TAG", ""+color);
MainActivity.mEditText.setBackgroundColor(color);
}
}
这是一个视频,介绍了它目前在我的应用中的工作方式: https://www.youtube.com/watch?v=lpYjKMLd9aU
我使用的颜色选择器库是这样的:https://github.com/danielnilsson9/color-picker-view
【问题讨论】:
-
你用什么来创建你的
ColorPickerDialogFrag2?它是一个库还是你自己的自定义类? -
@Bryan 哦,它是一个图书馆。我现在会附上它的链接。
-
你能发布你的
ColorPickerDialogFrag2代码吗? -
@Bryan 给你! pastebin.com/iJpzdXM7
标签: android