4
我試圖用一個應該完全相同的自定義複合視圖替換一組視圖。具體來說,我經常重複以下佈局:如何在合併的自定義android視圖上維護佈局屬性?
<LinearLayout style="@style/customLayoutStyle">
<Button style="@style/customButtonStyle" />
<TextView style="@style/customTextViewStyle" />
</LinearLayout>
我的目標是通過一個單一的<Highlighter />
替換此塊。
爲此我在res定義/設計/ highlighter.xml像
<merge xmlns:android="http://schemas.android.com/apk/res/android"
style="@style/customLayoutStyle">
<Button android:id="@+id/btnHighlighter" style="@style/customButtonStyle" />
<TextView android:id="@+id/lblHighlighter" style="@style/customTextViewStyle" />
</merge>
在我的自定義視圖我有類似
public class Highlighter extends LinearLayout {
public Highlighter(Context context, AttributeSet attrs) {
super(context, attrs);
inflate(context, R.layout.highlighter, this);
}
}
這主要工作,但似乎有些<merge>
標記的佈局參數的值將被忽略。這screenshot說明了什麼似乎是錯的。底部行上的3個圖像正確對齊,使用我試圖替換的3倍LinearLayout塊。只有左上角的圖像使用自定義視圖。我的猜測是填充和layout_weight的佈局參數丟失了。我做錯了什麼,還是我需要一個解決方法?
這就是我最終的結果。謝謝。 – 2013-02-10 21:53:11
這對我來說不是很滿意,因爲我需要在我的自定義視圖需要的地方重複這些視圖,即使它們是我自定義視圖的內在視圖。我想沒有其他選擇,只能在我的自定義視圖構造函數中手動設置它們 – nbarraille 2015-09-15 22:11:44