Buttons in Lollipop and higher have a default elevation to them which causes them to always draw on top. You can change this by overriding the default StateListAnimator
.
Try putting this into your button XML:
android:stateListAnimator="@null"
The FrameLayout should now cover the button.