Щелчок и длинный щелчок не работают в фреймворке

У меня есть frameLayout, который имеет два вида. Этот frameLayout внутри другого фрейма и relativeLayout.

Я хочу добавить прослушиватели кликов ImageView и длинных кликов. Когда я нажимаю ImageView, устанавливаю TouchListener ImageButton.

Я добавляю clickable, focusable, longClickable and android:descendantFocusability, но он даже не попадает в эти части слушателей ImageView.

Помогите мне, пожалуйста

  ImageView imageView = (ImageView) findViewById(R.id.view1);
  ImageButton imageButton = (ImageButton) findViewById(R.id.button);

   imageView.setOnLongClickListener(new OnLongClickListener() {
        @Override
        public boolean onLongClick(View view) {

            button.touchableButton(true);
            return true;
        }
    });

    imageView.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            button.touchableButton(false);

        }
    });

    public void touchableButton(boolean touchable) {
     imageButton.setOnTouchListener(touchable ? this : null);
    }

Мой макет:

<RelativeLayout
        android:id="@+id/grandPaRelative"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">

    <FrameLayout
        android:id="@+id/dadFrame"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true"
        android:clipChildren="false"
        android:clipToPadding="false">

                         <FrameLayout
                            android:id="@+id/momFrame"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:clipChildren="false"
                            android:clipToPadding="false"
                            android:descendantFocusability="blocksDescendants">

                            <ImageButton
                                android:id="@+id/button"
                                android:layout_width="48dp"
                                android:layout_height="48dp"
                                android:layout_gravity="center"
                                android:layout_marginTop="5dp"
                                android:adjustViewBounds="true"
                                android:background="@drawable/circle_tintable"
                                android:contentDescription="@null"
                                android:gravity="center"
                                android:padding="10dp"
                                android:src="@drawable/abc" />

                            <ImageView
                                android:id="@+id/view1"
                                android:layout_width="48dp"
                                android:layout_height="48dp"
                                android:layout_gravity="center"
                                android:layout_marginTop="5dp"
                                android:adjustViewBounds="true"
                                android:clickable="true"
                                android:contentDescription="@null"
                                android:focusable="true"
                                android:gravity="center"
                                android:longClickable="true"
                                android:padding="15dp"
                                android:visibility="gone"
                                app:circleColor="@color/topBar" />

                    </FrameLayout>

         <ImageView
            android:id="@+id/view2"
            android:layout_width="48dp"
            android:layout_height="48dp"
            android:layout_gravity="center"
            android:layout_marginTop="5dp"
            android:adjustViewBounds="true"
            android:contentDescription="@null"
            android:gravity="center"
            android:padding="15dp"
            android:src="@drawable/view2"
            app:circleColor="@color/topBar" />

          </FrameLayout>
</RelativeLayout>

person propoLis    schedule 16.01.2018    source источник


Ответы (2)


Я слышал о том, что изображения людей были скрыты за макетами кадров раньше, и это не позволяло щелкать imageView. Я мог бы попробовать удалить android:visibility="gone" и посмотреть, исправит ли это ситуацию. Если нет, этот поток может помочь: Android ImageView onClickListener не работает

person Matthew Flathers    schedule 16.01.2018
comment
Ах, да! Вы пытались поместить прослушиватель кликов перед прослушивателем длинного клика? - person Matthew Flathers; 16.01.2018
comment
это не имеет значения - person propoLis; 16.01.2018
comment
Ну, похоже, вы сделали view1 кликабельным и доступным для долгого клика, но я не вижу этих объявлений для вашего view2. И view2 — это тот, на который вы пытаетесь настроить слушателей. - person Matthew Flathers; 16.01.2018
comment
Хмммм, тогда я не вижу ничего плохого в вашем коде. Кажется, что по какой-то причине ваши imagviews никогда не регистрируются как клики - person Matthew Flathers; 16.01.2018
comment
Я слышал о том, что изображения людей были скрыты за макетами кадров раньше, и это не позволяло щелкать imageView. Я мог бы попробовать удалить android:visibility=gone и посмотреть, исправит ли это ситуацию. Если нет, этот поток может помочь: [Android ImageView onClickListener не работает] (stackoverflow.com/a/6083930/9220124) - person Matthew Flathers; 16.01.2018

попробуйте с возвратом true в false. ImageView imageView = (ImageView) findViewById(R.id.view1); ImageButton imageButton = (ImageButton) findViewById(R.id.button); imageView.setOnLongClickListener(new OnLongClickListener() {

    @Override
    public boolean onLongClick(View view) {

        button.touchableButton(true);
        return false;
    }
});`
person Durgesh Kumar    schedule 17.01.2018