2017-02-11 95 views
6

在約束佈局,β5的最新版本「MATCH_PARENT不ConstraintLayout支持」,使用match_parent拋出一個異常:如何抑制約束佈局錯誤

android.view.InflateException: Binary XML file line #12: MATCH_PARENT is not supported in ConstraintLayout 

正如發佈說明解釋:

「(...)其行爲未定義。爲減少錯誤風險,我們現在拋出一個 異常,如果我們遇到它。」 - source

他們建議,正確的用法是使用0dp(MATCH_CONSTRAINT),但因爲我有一個抽屜佈局我的約束佈局裏面,設置寬度0dp拋出「DrawerLayout必須MeasureSpec.EXACTLY進行測量「錯誤。

所以我的問題是我怎麼能抑制錯誤「在ConstraintLayout不支持MATCH_PARENT」?父的

+0

你不能。即使你找到了一種方法來做到這一點,它可能不會奏效。它沒有承諾在圖書館的所有版本上工作。你只是不應該這樣做。 –

回答

1

至少同樣的版本約束佈局的1.1.0-beta3,

你可以使用match_parent沒有問題。

但是它仍然建議使用:

android:layout_width="0dp" 
app:layout_constraintStart_toStartOf="parent" 
app:layout_constraintEnd_toEndOf="parent" 
+2

值得注意的是,使用match_parent時的性能命中率可能非常高 - 我有一個佈局,我在視圖分頁器中使用了match_parent作爲元素,並且它幾乎不適用於稍慢的設備(就像它會需要幾秒鐘滾動) - 更改爲0dp並限制爲左/右父解決了此問題 – AntekM

12

在ConstraintLayout替換的

android:layout_width="match_parent" 

可以與

android:layout_width="0dp" 
app:layout_constraintLeft_toLeftOf="parent" 
app:layout_constraintRight_toRightOf="parent" 

即約束小窗口向右進行邊緣和左邊緣

+1

我已經試過這個,但是因爲我的ConstraintLayout中有一個DrawerLayout,所以我收到了「DrawerLayout必須用MeasureSpec.EXACTLY測量」的錯誤,正如我的問題所述。我結束了使用LinearLayout。 – Marcola

+0

感謝您的反饋,很高興知道 –