Можно ли программно изменять размер FloatingActionButton во время выполнения?
Я использую FloatingActionButton из библиотеки поддержки. Я заметил, что размер может быть изменен только в XML, используя атрибут app: fab_size = "".
Я посмотрел на исходный код и нет методов, которые позволили бы изменить размер потрясающего, когда приложение работает.
Я просто хочу изменить размер fab между MINI и NORMAL в зависимости от пользовательского ввода, поэтому мне нужно делать это программно.
Кто-нибудь еще нашел способ сделать это?
2 ответа
Это невозможно. Размер определяется по FloatingActionButton
создание и остается статичным в течение своего жизненного цикла. Нет открытых методов, позволяющих динамически изменять размер. Конечно, вы могли бы использовать java reflection
для того, чтобы получить доступ к частным size
а также padding
поля и изменить их, но это not a good
идея. Кроме того, вы можете взглянуть на какую-то стороннюю реализацию, которая позволяет динамически изменять размер кнопки, например
Я думаю FloatingActionButton
setSize()
метод делает то, что вы хотите. Если у тебя есть FloatingActionButton
называется fab
, ты можешь использовать:
fab.setSize(FloatingActionButton.SIZE_MINI);
fab.setSize(FloatingActionButton.SIZE_NORMAL);
Вы можете использовать setCustomSize(), этот метод просто меняет свойство customSize, поэтому вы должны запросить request после изменения customSize.
public void setCustomSize(@Px int size) {
if (size < 0) {
throw new IllegalArgumentException("Custom size must be non-negative");
} else {
this.customSize = size;
}
}
Код ниже должен изменить размер.
fab.setCustomSize(size);
fab.requestLayout();