我在學習自定義組件,並且在自定義xml屬性方面遇到了一些麻煩。
我的自定義組件擴展了LinearLayout,並且在構造函數中(public Custom(Context context, AttributeSet attrs)
)我正在爲xml佈局(2個按鈕和1個EditText)充氣。
我也values/attrs
宣佈這個自定義屬性:
TypedArray無法正常工作
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="Custom">
<attr name="initValue" format="integer" />
<attr name="stepSize" format="integer" />
<attr name="maxValue" format="integer"/>
</declare-styleable>
</resources>
在後,我吹我試圖讀取自定義佈局的構造屬性,像這樣:
if (attrs != null) {
TypedArray ta = context.obtainStyledAttributes(attrs,
R.styleable.Custom, 0, 0);
setInitValue(ta.getInt(R.styleable.Custom_initValue, 0));
setStepSize(ta.getInt(R.styleable.Custom_stepSize, 1));
setMaxValue(ta.getInt(R.styleable.Custom_maxValue, 5));
ta.recycle();
}
現在我嘗試通過將此自定義組件添加到像這樣的xml佈局來測試此自定義組件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<here.is.my.package.Custom android:id="@+id/add"
android:layout_width="wrap_content" android:layout_height="wrap_content"
initValue="2" maxValue="7" stepSize="1" />
</LinearLayout>
這不起作用,我只得到默認值(0,1,5)。我錯過了什麼,或者這是正常的行爲?
親愛的同樣顯示問題我...我創建了一個CustomTextView並創建一個單獨的XML佈局,所以任何人都可以使用它只是通過使用 ...但是當我試圖獲取自定義值屬性..它的給予默認只有價值...任何建議。 –
CoDe
@Shubh請發佈一個提供問題所有細節的新問題。 – Luksprog
它爲我工作....重新啓動工作區後,項目清理再次......並開始工作......謝謝 – CoDe