单击并长按不在framelayout中工作

时间:2018-01-16 16:24:47

标签: android click onlongclicklistener

我有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>

2 个答案:

答案 0 :(得分:1)

尝试使用return true to 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;
    }
});`

答案 1 :(得分:0)

我之前听说过人物的图像隐藏在Frame Layouts后面,这会阻止imageView点击。我可能会尝试删除android:visibility =“gone”并查看是否可以解决问题。如果不是这个线程可能会有帮助:Android ImageView的onClickListener不起作用