【问题标题】:Click and longclick not working in framelayout单击和长按在框架布局中不起作用
【发布时间】:2018-01-16 16:24:46
【问题描述】:

我有 frameLayout,它有两个视图。这个frameLayout里面还有另外一个frame和relativeLayout。

我想添加 ImageView 点击和长点击监听器。当我单击 ImageView 时,设置 ImageButton touchListener。

我添加了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>

【问题讨论】:

    标签: android click onlongclicklistener


    【解决方案1】:

    尝试将 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;
        }
    });`
    

    【讨论】:

      【解决方案2】:

      我以前听说过人们的图像被隐藏在 Frame Layouts 后面,这会阻止 imageView 的点击。我可能会尝试删除 android:visibility="gone" 并查看是否可以解决问题。如果不是这个线程可能会有所帮助:Android ImageView's onClickListener doesn't work

      【讨论】:

      • 啊,是的!您是否尝试将点击侦听器放在长点击侦听器之前?
      • 没关系
      • 好吧,看起来好像您使 view1 可点击和 longclickable,但我没有看到您的 view2 的这些声明。 view2 是您尝试设置监听器的那个。
      • 嗯,那么我在您的代码中看不到任何问题。似乎由于某种原因,您的 imagviews 从未注册为点击
      • 我以前听说过人们的图像被隐藏在 Frame Layouts 后面,这会阻止 imageView 的点击。我可能会尝试删除 android:visibility="gone" 并查看是否可以解决问题。如果不是这个线程可能会有所帮助:[Android ImageView 的 onClickListener 不起作用](stackoverflow.com/a/6083930/9220124)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-30
      • 2017-07-29
      • 1970-01-01
      • 2015-10-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多