Я только начинаю играть с MotionLayout
. Я определил макет активности, используя MotionLayout
, который использует MotionScene
, чтобы скрыть и показать представление.
Переход MotionScene
выглядит следующим образом:
<Transition
app:constraintSetStart="@id/collapsed"
app:constraintSetEnd="@id/expanded">
<OnClick app:target="@id/nextButton" />
</Transition>
Проблема в том, что при программном добавлении ClickListener к кнопке ничего не происходит:
nextButton.setOnClickListener {
//do some stuff
}
Этот слушатель полностью игнорируется, но переход (расширение / свертывание представления) запускается при каждом нажатии. Я видел, где кто-то расширяет MotionLayout
для обработки событий щелчка, но кажется, что может быть более простой способ добавить еще один прослушиватель щелчков для кнопки.
Вопрос 1. Есть ли способ добавить ClickListener к цели OnClick при переходе MotionLayout?
Вопрос 2: Есть ли способ сделать переход одноразовым событием?
Желаемый результат заключается в том, что если при нажатии кнопки вид свернут, то вид расширяется, но если он уже развернут, он остается развернутым.
Наконец, я использую пространство имен "http://schemas.android.com/apk/res-auto"
, и документы ясно указывают, что target
и mode
являются атрибутами для OnClick. Но проект не будет компилироваться, когда я использую mode
, потому что его нельзя найти в этом пространстве имен.
Вопрос 3: Я использую правильное пространство имен?