0

我正在对类进行子Spinner类化,我需要通过 .xml 文件获取 xml 文件中指定的对象android:entries。我怎样才能做到这一点?

<com.myapp.MySpinner
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:entries="@array/myarray"/>

所以我需要entries参数中指定的数组或resourceid,这样我就可以自己获取它们。

4

1 回答 1

1

您需要覆盖参数的构造函数Spinner并从AttributeSet参数中检索条目。

public class MySpinner extends Spinner {
    public MySpinner(Context context, AttributeSet attrs) {
        super(context, attrs);

        if (attrs != null) {
            final int[] ids = {android.R.attr.entries};
            final TypedArray array = context.obtainStyledAttributes(attrs, ids);
            final int entriesId = array.getResourceId(0, 0);

            if (entriesId > 0) {
                final Resources resources = context.getResources();
                final String[] entries = resources.getStringArray(entriesId);

                if (entries != null) {
                    // do whatever you want here
                }
            }
        }
    }
}
于 2013-02-17T12:37:17.033 回答