Получение значения атрибута, объявленного в XML перед надуваниемAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Получение значения атрибута, объявленного в XML перед надуванием

Сообщение Anonymous »


Я создаю пользовательскую кнопку MyButton, расширяющую MaterialButton. Вариант использования заключается в том, что существует два размера кнопки: большой и маленький. Большая кнопка будет иметь полную ширину (аналогично match_parent) и маленькая кнопка будет иметь некоторую minWidth, скажем, 100dp, и, что наиболее важно, у них будут разные отступы и разные размеры текста. При написании своего пользовательского класса для MyButton как я могу проверить, какие layout_height и layout_width упомянуты в xml, чтобы я мог предпринять соответствующие действия для установки правильный интерфейс?

Я пытаюсь получить высоту и ширину представления, но они будут равны 0, потому что к тому времени они еще не полностью сформированы. Я также пробовал использовать doOnLayout{ , но он также не вызывается в классе MyButton. Я также попробовал пользовательские атрибуты для button_size и на основе этого установил параметры макета, но тоже не сработало.

Итак, Я надеюсь, что смогу каким-то образом получить то, что объявлено в xml (в основном layout_width), чтобы я мог соответствующим образом обновить другое свойство.

например
откройте конструктор класса MyButton @JvmOverloads( контекст: Контекст, частный набор атрибутов val: AttributeSet? = ноль, частный val styleAttribute: Int = com.google.android.material.R.attr.materialButtonStyle) : MaterialButton (контекст, атрибутSet, styleAttribute) { в этом{ атрибутSet?.let { parseAttr(it) } } частное развлечение parseAttr(attr: AttributeSet) { if (/* необходимо проверить, равна ли объявленная ширина_макета match_parent*/){ // устанавливаем отступы и стиль текста } еще { // устанавливаем другие отступы и стиль texy } } }
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»