zoukankan      html  css  js  c++  java
  • 如何找按钮数组在布局中的横竖坐标位置?

    原问题来自于CSDN问答频道,更多解决方案见:http://ask.csdn.net/questions/1964

    问题描述:

    我创建了一个按钮数组,当点击每一个按钮时都会调用 onClick 方法。在那个方法中,如何获得按钮的位置,比如行和列的位置?
    创建 buttons 数组:

    LinearLayout layoutVertical = (LinearLayout) findViewById(R.id.liVLayout);
                LinearLayout rowLayout=null;
    
                LayoutParams param = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT,1);
    
                //Create Button
                for (i = 0; i<6; i++) 
                {
                    rowLayout = new LinearLayout(this);
                    rowLayout.setWeightSum(7);
                    layoutVertical.addView(rowLayout,param);
                    for(j=0;j<7;j++)
                    {
                        pBtnDay[i][j]=new Button(this);
                        rowLayout.addView(pBtnDay[i][j],param); 
    
                        pBtnDay[i][j].setOnClickListener(this); 
                    }
                }
                return true;

    onClick 方法:

    Button b = (Button)view;
        txtDate.setText(b.getText());
        boolean bStartDate=false;


    现在onclick方法中,我可以使用 Button b=(Button)view 获得每个按钮的文本。如何找按钮数组在布局中的横竖坐标位置?

    解决方案:

    你可以使用Button.setTag()并保存 j  x的值

    class ButtonPosition {
         int x,y;
         public ButtonPosition(int x,int y){
           this.x = x;
           this.y = y;
        }
    }
      ......
    for(j=0;j<7;j++){
         pBtnDay[i][j]=new Button(this);
         rowLayout.addView(pBtnDay[i][j],param); 
         pBtnDay[i][j].setOnClickListener(this);
         //Save the position
         pBtnDay[i][j].setTag(new ButtonPosition(i,j));
    }

    在 onClick 方法中查找位置

    .....
     Button b = (Button)view;
     ButtonPosition p = (ButtonPosition)b.getTag();
     .....




     

  • 相关阅读:
    C++---const
    qt--textEdit多行文本编辑框
    qt--QByteArray字节数组
    qt5--拖放
    qt5--自定义事件与事件的发送
    qt5--键盘事件
    qt5--鼠标事件
    qt5-事件过滤器
    qt5-event事件的传递
    qt-事件的接受和忽略
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3003943.html
Copyright © 2011-2022 走看看