2016-02-27 67 views
1

我有以下佈局(這裏給出的簡單設計):爲什麼FrameLayout在我的佈局中沒有正確設置Z順序?

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    app:layout_behavior="@string/appbar_scrolling_view_behavior" 
    tools:showIn="@layout/activity_main"> 
    <FrameLayout 
     android:orientation="horizontal" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     > 
     <Button 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Hey, badge!" 
      android:layout_margin="10dp" 
      /> 
     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="AAAAA" 
      android:layout_margin="10dp" 
      android:textSize="12sp" 
      android:background="#ff00ff" 
      android:padding="10dp" 
      android:layout_gravity="top|end" 
      /> 
    </FrameLayout> 
</RelativeLayout> 

我希望設置TextView的文本「AAAA」充當按鈕徽章,也就是被放置在按鈕在其右上角,情況並非如此。

相反,當我嘗試上的HTC One M7棒棒糖,或Genymotion的Nexus 6棒棒糖這個代碼,屏幕看起來是這樣的:

Screenshot of views badly placed

當我嘗試Genymotion的Nexus相同的代碼5奇巧,一切看起來都如預期,即第一視圖(按鈕)顯示下方徽章(TextView的)

沒有人有任何線索可能是錯在這裏?

感謝, Deveti

回答

4

elevation導致此問題。它在Lollipop中引入,並負責z排序。將您的布​​局複製到layout-v21併爲該按鈕設置android:elevation="0dp"

+0

它的工作,謝謝! 但是,我必須爲TextView添加'android:elevation =「2dp」',然後顯示徽章。不知道爲什麼,有趣。 –

+1

我忘了說,如果你不想創建多個佈局,你可以在棒棒糖上用'View.setElevation(float)'設置海拔,或者在棒棒糖上用'ViewCompat.setElevation(float)'設置海拔。 –

0

我看到這個在另一個線程的地方,但你可以把這個到你的元素:

android:stateListAnimator="@null" 

爲他人說,棒棒糖按鈕海拔最高如此改變其覆蓋其他元素。

例如在我的按鈕視圖下方我使用它,它表明:

<FrameLayout 
    android:id="@+id/ib_one_container" 

    android:layout_width="38dp" 
    android:layout_height="38dp" 
    android:layout_marginLeft="5.3dp" 
    android:orientation="vertical" 
    android:padding="3dp" 
    > 


    <Button 
     android:id="@+id/ib" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:background="@color/white" 
     android:clickable="true" 
     android:gravity="center" 
     android:stateListAnimator="@null" 
     android:textSize="11sp" /> 


    <com.mobile.pomelo.UI.customViews.CustomDiagonalLineView 
     android:id="@+id/diagaonal" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:visibility="visible" 

     /> 


</FrameLayout> 
相關問題