Size: a a a

Android Developers

2019 November 15

АД

Андрей Данилов in Android Developers
Denis Egorov
Мне кажется, что this.addView(this) - немного странная конструкция
главное шоб не в конструкторе)
источник

А

Александр in Android Developers
Denis Egorov
Мне кажется, что this.addView(this) - немного странная конструкция
Странная.
Однако эффект будет тот же, если написать что - то вида:

newViewList.add(createNewView())

createNewView()
= inflater.inflate(...).apply{addViewToRoot(this)}

private fun addViewToRoot(view: View) = addView(view)
источник

АД

Андрей Данилов in Android Developers
> А магия в том, что этот метод отрабатывает единожды.
источник

АД

Андрей Данилов in Android Developers
а может ViewGroup таки использовать тогда?
источник

АД

Андрей Данилов in Android Developers
а не View
источник

А

Александр in Android Developers
Андрей Данилов
а может ViewGroup таки использовать тогда?
А в чём будет разница?
Сейчас вьюха от RelativeLayout наследована, на этом многое завязано.
источник

I

Ilya in Android Developers
Драсте. У меня тут такая проблемка. Я написал либу для себя, которая позволяет двигать экран(отслеживаю клики с помощью dispatchTouchEvent), но проблема в том, что на этом экране есть ресайкл и в нём элементы выделяются на длинный клик. Когда я двигаю экран один элемент каждый раз выделяется. Вообще не знаю как пофиксить
источник

АД

Андрей Данилов in Android Developers
Александр
А в чём будет разница?
Сейчас вьюха от RelativeLayout наследована, на этом многое завязано.
хм ну видимо нужен весь код чтоб понять че за фигня
источник

А

Александр in Android Developers
Андрей Данилов
хм ну видимо нужен весь код чтоб понять че за фигня
Я решил проблему кстати только что. Если я правильно понял причину, то это какой - то непостижимый кек.
источник

АД

Андрей Данилов in Android Developers
Александр
Я решил проблему кстати только что. Если я правильно понял причину, то это какой - то непостижимый кек.
ну выкладывай что было)
источник

АД

Андрей Данилов in Android Developers
Ilya
Драсте. У меня тут такая проблемка. Я написал либу для себя, которая позволяет двигать экран(отслеживаю клики с помощью dispatchTouchEvent), но проблема в том, что на этом экране есть ресайкл и в нём элементы выделяются на длинный клик. Когда я двигаю экран один элемент каждый раз выделяется. Вообще не знаю как пофиксить
в диспатче нигде super не дергаешь?
источник

I

Ilya in Android Developers
Ну вот в том и дело, что мне нужно чтобы и сами клики работали. Поэтому я на ACTION_DOWN дёргаю super
источник

I

Ilya in Android Developers
Если юзер не двигает экран, то нужно, чтобы клики работали
источник

АД

Андрей Данилов in Android Developers
Ilya
Ну вот в том и дело, что мне нужно чтобы и сами клики работали. Поэтому я на ACTION_DOWN дёргаю super
проверяй - есть после Action Down идет Action Move - двигаешь экран, если сразу Action UP или что там - оба события отправляешь дальше через super
источник

I

Ilya in Android Developers
Проблема в том, что когда ты просто задерживаешь палец на экране, то тоже onMove вызывается
источник

А

Александр in Android Developers
Андрей Данилов
хм ну видимо нужен весь код чтоб понять че за фигня
Между инфлейтом и добавлением вьюхи в рут я дописал:
view.id = View.generateViewId()

И всё, новые вьюхи начали добавляться.
Итоговый метод(без рефакторинга офк, ибо разруха):

private fun inflateNewCard() {
   val view = createNewCard()
   view.id = View.generateViewId()
   addViewToRoot(view)
   cardList.add(view)
}

У меня сложилось ощущение настоичивое, что мой инфлейт метод возвращал одну и ту же вьюху мне. Обосновать не могу.
источник

АД

Андрей Данилов in Android Developers
Ilya
Проблема в том, что когда ты просто задерживаешь палец на экране, то тоже onMove вызывается
это не проблема как раз
источник

АД

Андрей Данилов in Android Developers
сделай дельту по движению, типа если сдвинули меньше чем на 5 пикселей - ресайклер , больше - двигаем экран
источник

I

Ilya in Android Developers
Ну там та же координата приходит. Я этот способ уже пробовал. Если дёрнуть быстро, то не выделяется,а вот если медленно то выделяется. А ещё могут палец на пару милисекунд задержать, а потом только начать двигать.
источник

I

Ilya in Android Developers
Вот был бы способ отменить таймер лонг клика
источник