Android onTouchListeners для отдельных представлений - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь перетащить просмотры на моем экране. У меня есть массив представлений и идентификаторов, как установить прослушиватель щелчка для каждого, чтобы я знал, с какой частью пользователь пытается взаимодействовать. По какой-то причине слушатель установит только ту часть, которая будет помещена последней, и оттуда будет вести себя так, как будто я тоже этого хочу. Как мне сделать так, чтобы каждое представление имело свой собственный обработчик кликов.

Вот код:

class MainActivity : AppCompatActivity() {

val touch = TouchListener()
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    val mainScreen = findViewById<RelativeLayout>(R.id.rellayout)

    for ( i in 0 .. 4)
    {
        for (j in 0 .. 4)
        {
            val testSquare = Square(this, (1+2*i)*54f , (1+2*j)*54f, (PI/4).toFloat())

            testSquare.setOnTouchListener(touch)
            mainScreen.addView(testSquare)
        }
    }

}
}

1 Ответ

0 голосов
/ 29 мая 2020

вы можете реализовать onTochListener, а затем переключиться в другом представлении следующим образом.

class Activity : AppCompatActivity(), View.OnTouchListener {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_)
    val mainScreen = findViewById<RelativeLayout>(R.id.rellayout)

    for ( i in 0 .. 4)
    {
        for (j in 0 .. 4)
        {
            val testSquare = Square(this, (1+2*i)*54f , (1+2*j)*54f, (PI/4).toFloat())

            testSquare.setOnTouchListener(this)
            mainScreen.addView(testSquare)
        }
    }
}

override fun onTouch(view: View, motionEvent: MotionEvent): Boolean {
    when (view.id) {
        R.id.death // these are example ids
        -> {
        }
        R.id.daimajia_indicator_wrapper -> {
        }
        R.id.Accordion -> {
        }
    }//do code
    //do code
    //do code
    return false
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...