方案一 1. 利用佈局控制項顯示優先順序 在xml中RelativeLayout,FrameLayout,靠後的控制項顯示在上層。 2. 利用margin屬性 margin屬性可以控制控制項間的距離,屬性值為正值時,越大離得越遠,越小則離得越近。 所以可以通過給 , , , 。 這四個屬性設置為 負數值 , ...
方案一
-
利用佈局控制項顯示優先順序
在xml中RelativeLayout,FrameLayout,靠後的控制項顯示在上層。 -
利用margin屬性
margin屬性可以控制控制項間的距離,屬性值為正值時,越大離得越遠,越小則離得越近。
所以可以通過給android:layout_marginTop
,android:layout_marginBottom
,android:layout_marginLeft
,android:layout_marginRight
。這四個屬性設置為負數值,會讓控制項疊加在一起。
-
記住Button的優先順序最高
從Android 5.0 開始,在同一個佈局下,Button將總是位於最上層。產生原因:
stateListAnimator
屬性==>Button自帶在點擊時預設有個陰影的效果用於表示按下的狀態。
如果想讓Button不覆蓋其他控制項,可以使用android:stateListAnimator="@null"
,去掉預設點擊的陰影效果,使Button可以被正常的覆蓋。
方案二
調整佈局xml中的重疊控制項的 elevation
屬性
示例:
android:elevation="5dp"
例如在 RelativeLayout中使用了 CardView ,即使在靠後使用 Button,還是無法覆蓋 CardView,原因可能是
elevation 屬性的大小問題,將對應的控制項的elevation 屬性提高,就可以讓對應控制項在疊加關係中由下層變為上層。
方法三
Java代碼中調用: A.bringToFront();
讓A顯示出來