【问题标题】:ImageView on again clickImageView 再次点击
【发布时间】:2016-04-14 20:39:49
【问题描述】:

我希望我的ImageView 在按下时更改它的drawable 资源。第二次按下ImageView时出现问题。

让我解释一下,如果第一次按下ImageView,我希望它从drawable A 更改为drawable B。如果再次按下ImageView,我希望它从drawable B 更改为drawableA.

再次按下的部分不起作用..

这是我的代码:

public void imageViewBiljeskeNaListiCheckMarkMetoda(View view){
        imageViewBiljeskeNaListiCheckMark = (ImageView) findViewById(R.id.imageViewBiljeskeNaListiCheckMark);
        if (view == imageViewBiljeskeNaListiCheckMark){
            imageViewBiljeskeNaListiCheckMark.setImageResource(R.drawable.ic_biljeske_obavljeno);
        } else {
            imageViewBiljeskeNaListiCheckMark.setImageResource(R.drawable.ic_biljeske_nije_obavljeno);
        } 
    }

【问题讨论】:

  • 听起来像是一个复选框
  • 是的,但我更喜欢它与自定义可绘制对象
  • 你可以让复选框做到这一点。 stackoverflow.com/questions/7783787/…
  • 然后使用一个选择器来改变按钮drawable :)

标签: java android xml


【解决方案1】:

从方法中删除它.... 您需要在 onCreate 中初始化一次对象...

imageViewBiljeskeNaListiCheckMark = (ImageView) findViewById(R.id.imageViewBiljeskeNaListiCheckMark);

然后添加一个布尔变量来控制视图的状态。 .

public void imageViewBiljeskeNaListiCheckMarkMetoda(View view){
        flag =!flag;

        if (view == imageViewBiljeskeNaListiCheckMark){
          if (flag) {imageViewBiljeskeNaListiCheckMark.setImageResource(R.drawable.ic_biljeske_obavljeno);
        } else {
            imageViewBiljeskeNaListiCheckMark.setImageResource(R.drawable.ic_biljeske_nije_obavljeno);
        } 
}

【讨论】:

  • 那个标志到底是什么?
  • 控制视图状态的布尔值
  • 在activity中声明为变量... boolean flag;
  • 是的,但是 flag !=flag 仍然不是一个声明
【解决方案2】:

我建议使用视图的“标签”,并在标签中保留您需要的信息(例如,是否按下视图)

http://developer.android.com/intl/es/reference/android/view/View.html#setTag(java.lang.Object)

【讨论】:

    【解决方案3】:

    你不能只使用这样的切换方法吗?

    private void toggleDrawableOnClick(){
    
        /* now you can check to see if the set drawable is A using its id */
        if(visible drawable is A){
          imageViewBiljeskeNaListiCheckMark.setImageResource(R.drawable.ic_biljeske_nije_obavljeno);
        }else{
          imageViewBiljeskeNaListiCheckMark.setImageResource(R.drawable.ic_biljeske_obavljeno);
        }
    }
    

    我相信这应该更容易!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-21
      • 1970-01-01
      • 2014-02-01
      • 2015-05-20
      • 1970-01-01
      相关资源
      最近更新 更多