1. 程式人生 > >Android RelativeLayout中控制元件疊加顯示的問題

Android RelativeLayout中控制元件疊加顯示的問題

問題

在如下幾個場景我們需要控制元件的疊加顯示:

  1. 可滑動介面(ScrollView,ListView等)固定一個不會跟隨滑動的控制元件。
  2. 設定了visibility屬性的控制元件,當它需要顯示的時候總是顯示在最上層,而又不影響其他控制元件的位置。

碰到這些情況使用RelativeLayout往往是最優解,問題的核心是:控制元件的疊加顯示的先後順序

方案

1.優先順序

在xml佈局檔案中使用RelativeLayout,靠後的控制元件顯示在上層。

2.margin

margin屬性可以控制控制元件間的距離,屬性值為正越大離得越遠,反正依然。
所以可以通過給android:layout_marginTop android:layout_marginBottom android:layout_marginLeft android:layout_marginRight.

四個屬性設定為負數值便會讓控制元件疊加在一起。

3.Button的優先順序最高

從5.0 開始,在同一個layout下,Button將總是位於最上層。

產生原因:

stateListAnimator屬性
谷歌在Material Design中推出,是一個非常簡單的方法用來實現在可視狀態之間平滑過渡。這個屬性可以通過android:stateListAnimator進行設定,可以使控制元件在點選時產生不同的互動。對於Button,點選時預設有個陰影的效果用於表示按下的狀態(5.0以前就是簡單的變色)。

解決方法:

可以使用android:stateListAnimator=”@null”

去掉陰影效果而使Button可以被正常的覆蓋。

總結

知道這三條,應該能解決佈局中控制元件疊加顯示的所有情況。

參考

https://blog.csdn.net/zhang106209/article/details/81391515