【问题标题】:How to perform onClick and set to an empty image "slot"如何执行 onClick 并设置为空图像“插槽”
【发布时间】:2016-07-11 13:33:35
【问题描述】:

我有这些 ImageViews/ImageButtons,当我单击时,我想将我的选择显示到一个空槽中。

有六个选项可供点击,但我只需要选择四个,我想在我可用的空槽中显示这六个中的任何一个。

R.drawable.blue
R.drawable.red
R.drawable.green
R.drawable.yellow
R.drawable.brown
R.drawable.purple

它们是图像按钮。

我已经有一个空的“插槽”图像:

R.drawable.empty_Slot

我知道 onClick() 是我需要的,然后我需要将该点击设置为我拥有的 empty_slot 但我很困惑如果我能得到任何指导,我将如何实现这一点谢谢。

【问题讨论】:

  • 例如..如果您选择 R.drawable.blue 那么您希望 R.drawable.empyu_Slot 获得该颜色?
  • 是的,这是完全正确的选择我的蓝色,然后将其显示在我的一个空插槽图像中我需要为 4 个空插槽执行此操作,它们将在以后添加到数组中

标签: android


【解决方案1】:

您可以将imagebuttonstag 设置为以下

R.drawable.blue
R.drawable.red
R.drawable.green
R.drawable.yellow
R.drawable.brown
R.drawable.purple

喜欢

ImageButton red = (ImageButton)findViewById(R.id.red);
red.setTag(R.drawable.red);

然后设置 onClickListener 而不是在每个按钮上设置 onClick 侦听器。只需实现接口,然后在onClick 函数中获取此作为

@Override
public void onClick(View view) {
    int id = (Integer)view.getTag();
    emptySlot.setImageResource(id);
}

希望这会有所帮助。

【讨论】:

  • 实现接口是什么意思?
  • @majestic94 stackoverflow.com/questions/30082892/… 你只需要“实现 View.OnClickListener”
  • 好的,非常感谢您提供的附加链接来解释。我仍然有点困惑(抱歉),但这仅适用于一个 emptySlot?或者我的所有四个空插槽都具有相同的 ID?但是,这不会将所有空插槽更改为一种颜色吗?这是我的困惑,它看起来像是一个空插槽
  • 您可以在onClick函数中应用开关,然后view.getId()可以引导您点击哪个ID。然后,您可以使用适当的插槽进行更改。明白了吗?
  • 是的,使用 switch 语句更有意义,感谢您的帮助,我会试一试:)
【解决方案2】:

将“按钮”替换为您的 R.drawable.*

例如(mBlueButton 是您为保持蓝色的按钮命名的变量)

ImageView mBlueButton = (ImageView) findViewById(R.id.your_id_of_specific_button);

ImageView - 如果它只是一个按钮,请将“ImageView”替换为 “按钮”,其他一切都一样!

然后为每个按钮设置一个 onClickListerner,如果您有 6 个按钮,则必须将此代码粘贴 6 次,但使用您的命名变量更改名称。

 mBlueButton.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                 mEplySlotButton.setBackgroundColor(Color.Blue); // onClick of the blue button, set the empty slot to blue color. 
             }
         });

您还可以通过识别使用 switch 语句按下的按钮的 id 并依赖该 id 来执行您想要做的事情,从而为所有按钮仅使用一个功能。

【讨论】:

  • 这完全有道理,谢谢你,虽然有点混乱,onClick 功能只适用于一个空槽???我是否需要为每个可用的空插槽按 4 次“蓝色按钮”?因为这将是六个按钮的大量代码
  • @majestic94 请考虑 Mustansar Saeed 的回答
【解决方案3】:
mImageButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            //Get the image from the ImageButton that was clicked
            Drawable drawable = ((ImageButton) v).getDrawable();
            //Set that Image to your empty ImageView 
            mImageView.setImageDrawable(drawable);
        }
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-29
    相关资源
    最近更新 更多