如何在单击时更改按钮的颜色,并在下次单击时恢复为默认颜色?

我有一个like按钮RecyclerView,我想要的是当用户like第一次点击按钮时,按钮背景颜色将变为red彩色,当同一个用户点击like按钮时,按钮将变回默认颜色,即white.

我检查了几个 SO 问题,但仍然没有得到我想要的。到目前为止,我的解决方案如下所示,没有产生任何错误,但是当单击按钮时,什么也没有发生。

 likeButton =(Button) view.findViewById(R.id.likeButton);

 //here for user like the post
 holder.likeButton.setOnClickListener(new View.OnClickListener() {
            boolean clicked = true;

            @Override
            public void onClick(View v) {
                if(!clicked){
                    holder.likeButton.setBackgroundColor(Color.RED);
                    clicked = true;

                    //here i will update the database

                }else{
                    holder.likeButton.setBackgroundColor(Color.WHITE);
                    clicked = false;
                     //here i will update the database
                }


            }
        });

我也检查了这个SO 答案,所以我修改了我的代码如下,但单击按钮时仍然没有任何反应。

 holder.likeButton.setBackgroundColor(Color.WHITE);
 holder.likeButton.setOnClickListener(new View.OnClickListener() {
        ValueAnimator buttonColorAnim = null;

        @Override
        public void onClick(View v) {
            if(buttonColorAnim != null){
                buttonColorAnim.reverse();
                buttonColorAnim = null;
              //here i will update the database
            }else{
                final Button button = (Button) v;//here is the line I dont undestand
                buttonColorAnim = ValueAnimator.ofObject(new ArgbEvaluator(), Color.RED, Color.WHITE);

                buttonColorAnim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
                    @Override
                    public void onAnimationUpdate(ValueAnimator animator) {
                        // set the background color
                        button.setBackgroundColor((Integer) animator.getAnimatedValue());
                    }
                  //here i will update the database
                });

                buttonColorAnim.start();
            }
        }
    });

有人请指出我遗漏了什么,我想要的是在第一次点击时以编程方式更改按钮颜色,并在下次点击时改回默认值(避免来自同一用户的多次点击)。

迪利普·帕特尔

嗨尝试这个希望这可以帮助你...

在 XML 中

  <Button
    android:id="@+id/btnClick"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/white"
    android:text="click"/>

在适配器类中

  boolean click = true;


        holder.btnClick.setTag(position);
        holder.btnClick.setId(position);
        holder.btnClick.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                if (click) {
                    holder.btnClick.setBackgroundColor(Color.RED);
                    click = false;
                } else {
                    holder.btnClick.setBackgroundColor(Color.WHITE);
                    click = true;
                }
                notifyDataSetChanged();
            }
        });

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在下次单击时更改按钮的背景

单击时如何更改 Bootstrap 4 默认单选按钮颜色?

单击按钮时如何更改按钮颜色

如何在单击按钮时更改按钮的背景颜色

如何在单击按钮时更改按钮背景颜色

单击按钮时如何更改“颜色”名称?

单击按钮时如何更改背景颜色

单击时如何更改按钮的颜色?(Vue)

每次单击按钮时如何更改颜色?

单击时如何更改按钮颜色?

如何在单击按钮时更改矢量绘制路径的颜色

如何在单击时更改按钮的背景颜色

如何在单击按钮时更改工具栏颜色?

如何在单击时更改选定的 MenuStrip 按钮颜色?

如何在单击时更改按钮文本的颜色

单击时更改按钮颜色

单击“颜色”按钮时如何更改矩形的颜色

单击时的引导按钮显示默认颜色

如何在单击时将 HTML 中按钮的文本颜色更改为随机颜色?

如何在单击时选择多个类并在选择时更改颜色

如何在单击时更改按钮状态并在 React 中再次单击时恢复到原始状态?

如何在单击特定按钮时将所有按钮的颜色重置为原始颜色并添加新的特定颜色?

如何在按下按钮时更改按钮的颜色,并在按下其他按钮时重置为原始颜色?

单击角形时更改垫子按钮的颜色

单击按钮时更改边框颜色

ReactJS 按钮在单击时更改颜色

单击 JavaScript 时更改按钮颜色

单击按钮时更改焦点颜色

单击时更改按钮颜色-引导程序