錯題本:ConstraintLayout 不能正常顯示

  • 2019 年 12 月 11 日
  • 筆記

理想效果:

實際效果:

原因:因為文件中一個控制項的約束屬性寫錯了

這個屬性是 app:layout_constraintLeft_toLeftOf="@id/oa_setting_group_tv_add" 寫成了自己在自己左邊了。

<TextView      android:id="@+id/oa_setting_group_tv_add"      android:layout_width="wrap_content"      android:layout_height="wrap_content"      android:layout_marginLeft="@dimen/dp_10"      android:text="新增考勤組"      android:textColor="@color/oa_color"      android:textSize="@dimen/sp_16"      app:layout_constraintBottom_toBottomOf="@id/oa_setting_group_background_add"      app:layout_constraintLeft_toLeftOf="@id/oa_setting_group_tv_add"      app:layout_constraintTop_toTopOf="@id/oa_setting_group_background_add" />

如何發現:逐個排查

  1. 首先將第一個控制項放在了另一個已經在使用的布局裡,正常顯示;
  2. 在使用 tools-> XML Action->validate 檢查無果後。
  3. 重新建立個文件,逐個控制項,逐個屬性的寫,這時完全不 care 原文件。
  4. 因為這次比較仔細,故理想的樣子直接就出來了
  5. 對照兩個文件,發現有一個屬性寫錯了!!!

如何修復:改回來

總結:實時預覽!

ConstraintLayout 一個控制項的疏忽就是滿盤皆輸。 打開預覽,實時注意效果。實在太著急最次也要一個控制項一預覽。否則太難找了。