天天看點

RelativeLayout的layout_marginBottom屬性失效問題

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width= "wrap_content"
  4. android:layout_height= "wrap_content">
  5. <TextView
  6. android:id= "@+id/text_view1"
  7. android:layout_width= "wrap_content"
  8. android:layout_height= "wrap_content"
  9. android:layout_alignParentBottom= "true"
  10. android:layout_marginBottom= "50dp"
  11. android:text= "hello world1" />
  12. </RelativeLayout>

讀完這個布局,通過腦補畫面,你可能認為:一個TextView距底部50dp像素。

如果你真的這樣認為,那麼你就錯了,上面的布局運作後的真實情況如圖:

RelativeLayout的layout_marginBottom屬性失效問題

對,android:layout_marginBottom=”50dp”這句代碼失效了,為什麼呢?我也不知道,繼續尋找規律

接下來把RelativeLayout設定layout_height=“match_parent”,

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width= "wrap_content"
  4. android:layout_height= "<span style=" color:# ff0000;">match_parent </span>">
  5. <TextView
  6. android:id= "@+id/text_view1"
  7. android:layout_width= "wrap_content"
  8. android:layout_height= "wrap_content"
  9. android:layout_alignParentBottom= "true"
  10. android:layout_marginBottom= "50dp"
  11. android:text= "hello world1" />
  12. </RelativeLayout>

看效果:

RelativeLayout的layout_marginBottom屬性失效問題

這時發現android:layout_marginBottom=”50dp”這句代碼起作用了。

然後再繼續研究,RelativeLayout android:layout_height=”wrap_content”的情況,在text_view1上面再增加一個TextView

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. android:layout_width= "wrap_content"
  4. android:layout_height= "<span style=" color:# ff0000;">wrap_content </span>">
  5. <TextView
  6. android:id= "@+id/text_view2"
  7. android:layout_width= "wrap_content"
  8. android:layout_height= "wrap_content"
  9. android:layout_above= "@+id/text_view1"
  10. android:layout_marginBottom= "50dp"
  11. android:text= "hello world2" />
  12. <TextView
  13. android:id= "@+id/text_view1"
  14. android:layout_width= "wrap_content"
  15. android:layout_height= "wrap_content"
  16. android:layout_alignParentBottom= "true"
  17. android:layout_marginBottom= "10dp"
  18. android:text= "hello world1" />
  19. </RelativeLayout>

運作效果:

RelativeLayout的layout_marginBottom屬性失效問題

這時發現新增加的TextView的android:layout_marginBottom=”50dp”起作用了。

最後總結:

RelativeLayout布局裡

1、當設定為android:layout_height=”wrap_content”時,最下面的控件layout_marginBottom屬性無效,如果其他控件使用layout_above讓自己處于最下面的控件之上,那麼layout_marginBottom屬性有效。

2、當設定為android:layout_height=”match_parent”時,或者高度為固定值,那麼最下面的控件layout_marginBottom屬性才會有效。

轉載于:https://blog.csdn.net/w958796636/article/details/52921584