android - 以编程方式创建图像按钮

标签 android click imagebutton

我想以编程方式创建多个 ImageButton。我能够创建它们,但点击事件监听器一直接收到相同的 View (按钮 2),无论我是点击按钮 0、按钮 1 还是按钮 2。

    RelativeLayout gameBoard = (RelativeLayout) findViewById(R.id.RelGameboard);

    RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
    lp.addRule(RelativeLayout.CENTER_IN_PARENT,1);

    for(int i = 0 ; i <  3 ; i++)
    {

        ImageButton btnGreen = new ImageButton(this);
        btnGreen.setImageResource(R.drawable.bola_verde);
        btnGreen.setLayoutParams(lp);
        btnGreen.setOnClickListener(mGreenBallOnClickListener);
        btnGreen.setBackgroundColor(Color.TRANSPARENT); 
        btnGreen.setTag(i);
        btnGreen.setId(i);

                    gameBoard.addView(btnGreen);


     }'

点击事件监听器:

private View.OnClickListener mGreenBallOnClickListener = new View.OnClickListener() {

    @Override
    public void onClick(View v) {

        //check which green ball was clicked
        ImageButton imgBtn = (ImageButton) v;

    Log.i("greeny","Clicked on green ball->"+imgBtn.getTag()+" v.ID->"+v.getId());
    }
};

对于绘制的任何图像按钮,当我点击时我得到:Clicked on green ball->2 v.ID->2

按钮在不同的位置(我为每个按钮设置了不同的填充但为了简化代码我没有把它放在这里)

最佳答案

尝试添加一个onClickListener -

private View.OnClickListener ClickListener = new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        int selected_item = (Integer) v.getTag();
    }
};

编辑

尝试创建一个 ImageButtons 数组 -

ImageButton[] btnGreen = new ImageButton[3];

for (int i = 0; i < 3; i++) {
    btnGreen[i] = new ImageButton(this);
    btnGreen[i].setImageResource(R.drawable.bola_verde);
    btnGreen[i].setLayoutParams(lp);
    btnGreen[i].setOnClickListener(ClickListener);
    btnGreen[i].setBackgroundColor(Color.TRANSPARENT); 
    btnGreen[i].setTag(i);
    btnGreen[i].setId(i);

    gameBoard.addView(btnGreen[i]);
}

关于android - 以编程方式创建图像按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16416990/

相关文章:

android - 在三星 Galaxy Ace 2.2.1 和 Galaxy Tab 中打开/关闭相机 LED/闪光灯

android - 使用 Google Cloud Messaging 的 App Engine 后端需要哪些 gradle 依赖项?

java - 两种不同的参数类型(将对象转换为类型)

ios - 在 uiLabel 的下划线部分和链接带下划线的部分

android - 这个png文件到底有什么问题?

java - 动态创建的 ImageButtons 不可见

java - 在类方法中设置要在后台(异步)任务类(Java/Android)中访问的变量

android - Delphi、Android、SSL - IdSMTP ConnectTimeout - 在预设超时后不会终止与服务器的连接

click - Kendo 网格行选择更改事件?

jquery - 检查过去一天是否点击过链接