Java 选择时如何更改cardview的颜色?单击
我试着用卡片视图而不是按钮,我喜欢你能添加的信息量。但是我试着这样做,如果他们按下卡片,它就会改变颜色。我希望一旦他们发布,它就可以换回来。因此,它的工作方式与我的按钮类似 我可以得到它,这样它会在点击时改变,但它会一直保持不变,直到活动被销毁 这是我现在用来改变颜色的代码Java 选择时如何更改cardview的颜色?单击,java,android,android-cardview,android-gridlayout,Java,Android,Android Cardview,Android Gridlayout,我试着用卡片视图而不是按钮,我喜欢你能添加的信息量。但是我试着这样做,如果他们按下卡片,它就会改变颜色。我希望一旦他们发布,它就可以换回来。因此,它的工作方式与我的按钮类似 我可以得到它,这样它会在点击时改变,但它会一直保持不变,直到活动被销毁 这是我现在用来改变颜色的代码 public void setSingleEvent(GridLayout maingrid) { for (int i = 0; i < maingrid.getChildCount(); i++) {
public void setSingleEvent(GridLayout maingrid) {
for (int i = 0; i < maingrid.getChildCount(); i++) {
final CardView cardView = (CardView) maingrid.getChildAt(i);
final int finalI = i;
cardView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(mcontext, "Button: " + finalI, Toast.LENGTH_SHORT).show();
cardView.setCardBackgroundColor(mcontext.getResources().getColor(R.color.buttonPressed));
if (finalI == 0) {
mcontext.startActivity(new Intent(mcontext, Genre_Streaming.class));
}
}
});
public void setSingleEvent(网格布局主网格){
对于(int i=0;i
您可以尝试使用onTouchListener
而不是onClickListener
来捕获“运动事件”。这是一个用于报告运动(鼠标、笔、手指、轨迹球)事件的对象
以下是android中的运动事件常量列表您可以尝试使用
OnTouchListener
和ACTION\u DOWN
和ACTION\u UP
来处理新闻/发布事件,而不是OnClickListener
修改代码:
public void setSingleEvent(GridLayout maingrid) {
for (int i = 0; i < maingrid.getChildCount(); i++) {
final CardView cardView = (CardView) maingrid.getChildAt(i);
final int finalI = i;
cardView.setOnTouchListener(new OnTouchListener () {
public boolean onTouch(View view, MotionEvent event) {
if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
Toast.makeText(mcontext, "Button: " + finalI, Toast.LENGTH_SHORT).show();
cardView.setCardBackgroundColor(mcontext.getResources().getColor(R.color.buttonPressed));
if (finalI == 0) {
mcontext.startActivity(new Intent(mcontext, Genre_Streaming.class));
}
} else if (event.getAction() == android.view.MotionEvent.ACTION_UP) {
/* Reset Color */
cardView.setCardBackgroundColor(mcontext.getResources().getColor(R.color.red));
}
return true;
}
}
}
public void setSingleEvent(网格布局主网格){
对于(int i=0;i
链接:@markharrop不客气!我很高兴它解决了您的问题。
public void setSingleEvent(GridLayout maingrid) {
for (int i = 0; i < maingrid.getChildCount(); i++) {
final CardView cardView = (CardView) maingrid.getChildAt(i);
final int finalI = i;
cardView.setOnTouchListener(new OnTouchListener () {
public boolean onTouch(View view, MotionEvent event) {
if (event.getAction() == android.view.MotionEvent.ACTION_DOWN) {
Toast.makeText(mcontext, "Button: " + finalI, Toast.LENGTH_SHORT).show();
cardView.setCardBackgroundColor(mcontext.getResources().getColor(R.color.buttonPressed));
if (finalI == 0) {
mcontext.startActivity(new Intent(mcontext, Genre_Streaming.class));
}
} else if (event.getAction() == android.view.MotionEvent.ACTION_UP) {
/* Reset Color */
cardView.setCardBackgroundColor(mcontext.getResources().getColor(R.color.red));
}
return true;
}
}
}