我有類,它擴展了LinearLayout
,其中有Buttons
和Spinner
。WORKS:Android自定義組件 - 通過layout.xml提供的strings.xml中的訪問數組
這個對象獲得通過我的佈局XML文件包括:
<com.ics.spinn.ComboBox android:id="@+id/myautocombo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:completionThreshold="1"
android:entries="@array/suppliers" />
/>
陣列供應商在strings.xml中定義。
如果此組件現在不是com.ics.spinn.ComboBox,而是Spinner
,則Android會 自動填充Spinner適配器的「android:entries
」。
我想我的組件com.ics.spinn.ComboBox有同樣的表現方式: 到能夠訪問通過XML文件中定義的數組,這樣我就可以 它提供給我的微調組件內部,通過:
ArrayAdapter<String> a = new ArrayAdapter<String>(this.getContext(),android.R.layout.simple_spinner_dropdown_item, ARRAYINSIDEMYXML);
s.setAdapter(a);
我現在我可以直接通過getResources().getStringArray(R.array.suppliers)
訪問strings.xml中定義的數組,但我的代碼不應該知道的名字「供應商」,因爲它應通過機器人提供:項..
這個+JoãoMelo xml中的條目解決方案WORK:
public ComboBox(Context context, AttributeSet attrs) {
super(context, attrs);
TypedArray b = context.obtainStyledAttributes(attrs,
R.styleable.ComboBox, 0, 0);
CharSequence[] entries = b.getTextArray(R.styleable.ComboBox_myEntries);
if (entries != null) {
ArrayAdapter<CharSequence> adapter =
new ArrayAdapter<CharSequence>(context,
android.R.layout.simple_spinner_item, entries);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
s.setAdapter(adapter);
}
}
您的TypedArray在res/values文件夾內的attrs.xml文件中定義。在下面檢查我的答案。 –