当前位置: 首页 > 知识库问答 >
问题:

RecycerView项在滚动后更改按钮样式

冯文彬
2023-03-14

我有一个RecycerView与简单的项目-一个项目有一个图像,标题和按钮。当用户单击按钮时,它需要更改其布局->,指示按钮被单击(类似于复选框功能)。

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position)
  {
    holder.button.setOnClickListener(view -> {
        toggleButtonStyle((Button)view);
    });
  }

public void toggleButtonStyle(Button toggle) 
{
    Context ctx = toggle.getContext();
    if (toggle.isActivated()) {
        toggle.setActivated(false);
        toggle.setBackground(ContextCompat.getDrawable(ctx, R.drawable.btn_purple_corners));
        toggle.setTextColor(ContextCompat.getColor(ctx, R.color.purple_light));
    } else {
        toggle.setActivated(true);
        toggle.setBackground(ContextCompat.getDrawable(ctx, R.drawable.btn_purple));
        toggle.setTextColor(ContextCompat.getColor(ctx, R.color.white));
    }
}

共有1个答案

长孙宜
2023-03-14

我过去也有一些奇怪的行为。对我来说,只要打个电话就解决了

toggle.invalidate();

在if/else块之后。这将强制重绘。试试看,我也很惊讶,这为我修好了它。

 类似资料:
  • 正如标题所说,当我单击按钮或RecycerView项目时,我想改变RecycerView项目的样式(不是在所有项目上,只是在单击的项目上)。应该看起来像 单击任一按钮后,隐藏透明覆盖并对该项目执行操作

  • 问题内容: 我希望我的应用程序中的按钮样式在按下时可以更改。做这个的最好方式是什么? 问题答案: 使用。 这里是一个例子:

  • 问题内容: 可以更改按钮功能吗? 例如 点击,再点击一次 我已经尝试过类似,但没有结果。 我设法使叠加工作并在其中插入所需的数据。但是没有找到任何可以帮助我的帖子。我正在使用react-bootstrap。这是我的代码。 问题答案: 您可以尝试使用状态来存储颜色。也许这会让您想到解决问题的方法: 这是一个小提琴。

  • 所以我有这些按钮(3叠6个,18个),我想实现的是当我按下其中一个按钮时: > 边框颜色 其他按钮将重置为其正常样式 但是我不想通过“isEnable”技巧禁用其他的(我只在这里找到了涉及isEnable的解决方案),我仍然希望它们被启用,我只是希望它们不要在按下时被我的自定义样式“突出显示”。 对于第一部分,也就是我在IBAction中所做的造型: 这一小部分只是一个按钮,但我想如果我有18个按

  • 问题内容: 我想在用户滚动角度方式时更改CSS元素。 这是使用JQuery方式的代码 我尝试使用以下代码执行Angular方式,但是$ scope.scroll似乎无法正确获取滚动数据。 Muchos gracias好友! 问题答案: 请记住,在Angular中,DOM访问应从指令内部进行。这是一个简单的指令,可根据窗口的设置变量。 对我来说,您到底要寻找什么样的最终结果尚不清楚,所以这是一个简单

  • '导出默认函数 评级(道具){ 常量 [悬停,setHover] =使用状态(假); // 检查悬停状态常量 [com, setCom] = use 状态(假); //检查点击状态 }'我有五个评级按钮,我想在单击另一个按钮时取消单击已单击的按钮。通过点击我的意思是,当我点击其中一个按钮时,他们的样式主要改变为背景颜色,现在我希望当有人按下另一个评级时,我希望以前点击的按钮的样式恢复正常,新按下的