2011-09-12 103 views
3

的分析評價我讀這訂單相對佈局,最佳實踐和相對佈局

「 它曾經是Android的會使用單次處理 RelativeLayout的定義的規則,這意味着你可以而不是引用一個小部件 (例如,通過android:layout_above),直到它已經在XML中被聲明爲止,這個 定義了一些佈局有點複雜。現在已經安全地將 轉發到尚未定義的小部件。 「

我不知道是什麼問題也許是eclipse問題,但即使我使用2.3我仍然有問題,當我引用一些未聲明的視圖,所以對我來說這似乎是android不使用兩個傳遞來處理相對佈局規則。

注意:當我從其他小部件引用該小部件時,我總是使用@ + id/widget_name來聲明小部件和@ id/widget_name。我注意到我可以使用@ + id/widget_name,即使我只想引用該小部件。我猜這是錯誤的,但爲什麼有時候作品沒有任何投訴?在我看來,一個小部件應該被允許聲明只有一個...

我的問題是真的android使用兩個通行證?我需要用相對佈局

我對這個相對佈局碎料是如何製造的有點糊塗了工作的一些準則(最佳實踐),所以任何解釋,歡迎

感謝

+0

我也有這個問題,很難重新組織布局來修復引用。這不是編譯器的任務,而不是程序員? – Ixx

回答

2

@+id/name創建一個新的ID,如果它不存在。 @id/name引用一個現有的ID,並且永遠不會創建一個。

我不確定您是否可以在@+id/name之前在同一個文件中使用@id/name。如果沒有,我可以考慮兩種解決方法:

  1. 始終使用@+id/name

  2. 定義ids.xml文件中的所有ID,並始終使用@id/name

+0

我收到了一個關於頭號「總是使用@ + ID /名稱」的問題,我應該期待什麼副作用?我的意思是我不能正常定義名稱5次... – Lukap

+0

存在拼寫錯誤ID的風險。根據ID的使用位置,您可能會在編譯時或運行時遇到錯誤。 使用'@ id/name',當你拼錯一個id時,你總會遇到編譯時錯誤。 –

1

This是一般信息Android如何繪製視圖。 我認爲Android會在所有視圖中傳遞兩次,但它不會通過每個視圖一次。所以如果你有一個從一個xml到另一個xml的引用,它總是可以正常工作,但是如果你在單個xml中有引用,你必須小心地正確地在xml中排列元素。例如,我在我的RelativeLayout中有view1和view2。如果我想從view1引用view2,我必須在view1之前聲明view2。