如何从ontouchlistener

时间:2017-05-24 08:14:59

标签: java android xml

我有一个网格视图,其中放置了2d按钮数组。我在网格视图上设置了ontouchlistener。当触摸第一个按钮时,我如何在网格视图ontouchlistener中使用if语句来检测按下[0] [0]是否被按下/触摸

    gv.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
            final int actionPeformed = event.getAction();

            switch(actionPeformed) {
                case MotionEvent.ACTION_DOWN: {
                    final float x = event.getX();
                    final float y = event.getY();

                    lastXAxis = x;
                    lastYAxis = y;
                    textView2.setText("Button pressed");

                    break;
                }

                case MotionEvent.ACTION_MOVE: {
                    final float x = event.getX();
                    final float y = event.getY();

                    final float dx = x - lastXAxis;
                    final float dy = y - lastYAxis;
                    ed4 = (EditText) findViewById(R.id.editText4);
                    xAxis += dx;
                    yAxis += dy;
                    ed4.setText(Float.toString(yAxis));
                    break;
                }
                case MotionEvent.ACTION_UP: {

                    textView2.setText("released");

                }

按下按钮[0] [0]时,按钮的颜色应该改变。类似地,如果按下按钮[0] [0]和[0] [1],则两个按钮的颜色应该改变。如何实现这个目标?

2 个答案:

答案 0 :(得分:0)

这个怎么样?

if(button[0][0].getId() == R.id.buttonIDInXML) { }

View.getId()返回int值,表示您在xml文件中设置的ID。按钮也是视图,所以这对我有帮助。

答案 1 :(得分:0)

尝试调用类似这样的内容来获取按下按钮的视图。 按下/释放按钮视图后,它应该很容易改变颜色

override func viewDidLoad() {
    super.viewDidLoad()

    // allow cells to be selected
    tableView.allowsSelection = true

    // ensure that deselect is called on all other cells when a cell is selected
    tableView.allowsMultipleSelection = false
}

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    tableVIew.cellForRow(at: indexPath as IndexPath)?.accessoryType = .checkmark
}

func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
    tableVIew.cellForRow(at: indexPath as IndexPath)?.accessoryType = .none
}