防止按钮状态覆盖图像视图

时间:2018-04-06 13:54:33

标签: android button imageview overlay pressed

我有以下按钮状态

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

                    <ImageView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentLeft="true"
                        android:layout_alignParentStart="true"
                        android:layout_alignParentTop="true"
                        android:adjustViewBounds="true"
                        android:src="@drawable/ribbon_popular" />

                    <Button
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="top|start"
                        android:layout_margin="10dp"
                        android:background="@drawable/roundedcorners_green"
                        android:textAlignment="center"
                        android:textAllCaps="true"
                        android:textColor="@color/white_color"
                        android:textSize="22sp" />
</RelativeLayout>

并在代码中:

image.bringToFront();
ViewCompat.setElevation(image, 6);

导致此视图: enter image description here

然而,当按下按钮时,它会覆盖“POPULAR”徽章,如下所示: enter image description here

我尝试添加以下代码,以便在按钮处于按下状态时尝试将图像向前移动,但它不适用于按住状态,有时仅适用于点击事件:

button.setOnTouchListener(new View.OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent motionEvent) {
            if(motionEvent.getAction() == MotionEvent.ACTION_DOWN ||
                    motionEvent.getAction() == MotionEvent.ACTION_BUTTON_PRESS ||
                    motionEvent.getAction() == MotionEvent.ACTION_HOVER_ENTER) {
               popularBadge.bringToFront();
               ViewCompat.setElevation(popularBadge, 12);
               parentLayout.invalidate();

            }
            return false;
        }
    });

任何想法如何使图像视图始终位于按钮上方而不必使用FrameLayout?

提前致谢

1 个答案:

答案 0 :(得分:0)

试试这个:将imageview放在按钮下面,我猜它会被修复:

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content">



                    <Button
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:layout_gravity="top|start"
                        android:layout_margin="10dp"
                         android:stateListAnimator="@null"
                        android:background="@drawable/roundedcorners_green"
                        android:textAlignment="center"
                        android:textAllCaps="true"
                        android:textColor="@color/white_color"
                        android:textSize="22sp" />

                       <ImageView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_alignParentLeft="true"
                        android:layout_alignParentStart="true"
                        android:layout_alignParentTop="true"
                        android:adjustViewBounds="true"
                        android:src="@drawable/ribbon_popular" />
</RelativeLayout>

这个答案取决于z-index的属性。如果它解决了,请阅读它。