AppCompatButton在全屏黑色View遮挡下仍可见的问题求助
问题原因
AppCompatButton默认带有elevation(阴影层级),你添加的普通View未设置层级属性,导致即便XML中View写在按钮之后,按钮也会因z轴层级更高,显示在黑色View上方。另外需确认@color/black是完全不透明的(应为#FF000000,而非缺少alpha通道的#000000)。
解决方法
以下两种方案任选其一即可:
方案1:给黑色View添加足够高的elevation
在loading_animation View中添加android:elevation属性,数值超过按钮默认层级(比如16dp):
<View android:id="@+id/loading_animation" android:layout_width="0dp" android:layout_height="0dp" android:background="@color/black" android:elevation="16dp" <!-- 新增这行 --> app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent"/>
方案2:移除按钮的elevation
给AppCompatButton添加android:elevation="0dp",消除它的层级优势:
<androidx.appcompat.widget.AppCompatButton android:id="@+id/log_in_button" android:layout_width="300dp" android:layout_height="wrap_content" android:layout_marginTop="30dp" android:backgroundTint="#F5931D" android:text="login" android:textAllCaps="false" android:textColor="@color/white" android:elevation="0dp" <!-- 新增这行 --> app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" />
额外检查
若设置层级后仍不生效,打开colors.xml确认black的定义:
<color name="black">#FF000000</color>
确保开头的FF存在(代表完全不透明的alpha通道),如果是#000000则为透明黑色,无法遮挡内容。
内容的提问来源于stack exchange,提问作者Rishabh Aggarwal
相关产品推荐
相关产品推荐

