失去自定義的屬性,我已經中attrs.xml以下自定義佈局,在attrs.xml
<declare-styleable name="ToolsView">
<attr name="width_behaviour" format="reference" />
</declare-styleable>
我在我的佈局文件下面的代碼:
<com.hidden.hidden2.view.ToolsView
xmlns:app="http://schemas.android.com/com.hidden.hidden2"
android:id="@+id/page_toolbar_container"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="top|center_horizontal"
android:background="@drawable/tools_background"
android:gravity="center_horizontal"
android:layerType="software"
android:visibility="visible"
app:width_behaviour="@integer/tools_view_width_behaviour" />
然而,當我嘗試閱讀應用:在我的課
if (attributeSet != null) {
TypedArray a = getContext().obtainStyledAttributes(attributeSet, R.styleable.ToolsView, 0, 0);
final int N = a.getIndexCount();
for (int i = 0; i < N; i++) {
int attr = a.getIndex(i);
switch (attr) {
case R.styleable.ToolsView_width_behaviour:
widthBehaviour = a.getInteger(attr, -1);
break;
}
}
a.recycle();
的屬性進行設置的構造width_behaviour不爲空,但N爲0 - 沒有自定義attri butes獲得!所以它永遠不會進入for循環。
任何想法爲什麼是這樣?我習慣了很多佈局,這是我第一次遇到問題。
你在這裏是正確的,但這並不是問題。 – George
它仍然不是武器?呃...什麼是getContext?你爲什麼不使用construstor param的上下文? – Leonidos
超級構造函數已經執行,所以技術上我可以從視圖的getContext()中取出它。我沒有直接獲取它,因爲這是在super(context,attrs)調用後定義的初始化方法中。無論如何,我發現錯誤,請參閱下面的答案。 – George