Как получить значения атрибутов виджета Android в Java? - PullRequest
0 голосов
/ 01 апреля 2012

Я расширил класс Button для Android и хотел бы получить доступ к некоторым значениям атрибутов, которые задаются в файле XML, с помощью кода Java, например, padding, gravity. Дайте мне знать, как этого добиться ...

Ответы [ 2 ]

0 голосов
/ 14 марта 2013

Вот как вы можете это сделать.Это не самая красивая вещь в мире, но она должна работать.

 public class TestLayout extends LinearLayout {
        private static final String ANDROID_NAMESPACE = "http://schemas.android.com/apk/res/android";

        // XXX: This is defined in
        // com.android.interal.R.styleable.LinearLayout_*** but are not accessible
        // in the SDK :(
        private static final String ORIENTATION_ATTRIBUTE = "orientation";

        public SignUpHeaderLayout(Context context, AttributeSet attrs) {
            super(context, attrs);
            initialize(attrs);
        }

        private void initialize(AttributeSet attrs) {
            if (!isSet(attrs, ORIENTATION_ATTRIBUTE)) {
                setOrientation(LinearLayout.VERTICAL);
            }
        }

        private boolean isSet(AttributeSet attrs, String attribute) {
            return attrs.getAttributeIntValue(ANDROID_NAMESPACE, attribute, -1) != -1;
        }

    }
0 голосов
/ 01 апреля 2012

в вашем конструкторе вы получаете AttributeSet , а с receiveStyledAttributes вы можете получить доступ к атрибутам из xml, но некоторые из них являются частными и недоступны через SDK.также взгляните на исходный код TextView , особенно конструктор, начинающийся с @line 311.

...