OnClickListener на scrollView

У меня есть scrollView с большим количеством элементов

ScrollView scroller = (ScrollView)findViewById(R.id.scrollView);

Мне нужно прикрепить onClickListener к просмотру прокрутки, поэтому я делаю

scroller.setOnClickListener(new OnClickListener() { 
            @Override
            public void onClick(View v) { 
                // This is all you need to do to 3D flip
                AnimationFactory.flipTransition(viewAnimator, FlipDirection.LEFT_RIGHT); 
            }

        });

Но это не срабатывает, когда я прикасаюсь. Есть идеи?

 Geo Paul27 мая 2013 г., 17:59
Да, я попробовал это. Это не срабатывает. Внутри этих взглядов есть много сомнений, это из-за этого?
 Ahmad27 мая 2013 г., 17:58
Вы уверены, что это не таксрабатывает? Попробуйте войти в систему или показать тост в методе onClick и посмотреть, работает ли он.

Ответы на вопрос(3)

setOnClickListener прямо на ScrollView 'с ребенком.

Так какScrollView могу иметьтолько один ребенок, вы можете просто использовать этот подход:

ScrollView scrollView = //...

View.OnClickListener mOnClickListener = new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        // ...
}

//Set the onClickListener directly on the ScrollView's child
scrollView.getChildAt(0).setOnClickListener(mOnClickListener);
 aaaidan18 янв. 2018 г., 01:40
Это правильный ответ. Это работает, и предлагаемые здесь альтернативы ... неоптимальны.
 aaaidan18 янв. 2018 г., 01:41
Единственная проблема с этим решением состоит в том, что вам нужно подождать, покаScrollViewДочерний объект добавляется в дерево, прежде чем вы сможете настроить слушателя. Это'это не красиво, но я просто использовал пост, чтобы дождаться, пока это произойдет, прежде чем я бегуgetChildAt(0)

Лучшее решение кажется поставитьLinearLayout вScrollView и установитьsetOnClickListener в теме.

<scrollview xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent">

    <linearlayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@+id/myLayout" android:clickable="true" android:orientation="vertical">

       <!-- content here -->
   </linearlayout>
</scrollview>

в деятельности:

LinearLayout lin = (LinearLayout) fragment.rootView.findViewById(R.id.myLayout);

lin.setOnTouchListener(new setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            // Whatever
        }
});
Решение Вопроса

ScrollView получает сенсорное событие пользователя, а неScrollView, Вы должны установить атрибут clickable = false для каждого потомкаScrollView дляonClickListener работать на .ScrollView

Или альтернативой может быть установитьonClickListener на каждом из ScrollView 'с детьми и справиться.

Ваш ответ на вопрос