#android #view #position #margin #badge
#Android #Вид #позиция #маржа #значок
Вопрос:
Я пробовал это, но не работает:
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT
);
params.setMargins(0, 0, 200, 0);
badge.setLayoutParams(params);
badge.show();
Может ли кто-нибудь дать какой-нибудь наверняка работоспособный код? Большое спасибо!
Ответ №1:
К счастью, я понял причину, по которой LayoutParams не работает. После сканирования кода библиотеки я обнаружил, что он устанавливает параметры layoutparams в методе applyLayoutParams из метода show :
private void applyLayoutParams() {
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
switch (badgePosition) {
case POSITION_TOP_LEFT:
lp.gravity = Gravity.LEFT | Gravity.TOP;
lp.setMargins(badgeMarginH, badgeMarginV, 0, 0);
break;
case POSITION_TOP_RIGHT:
.......
Итак, наша настройка marigin переопределена.
И затем я нахожу классное решение. Перед методом show достаточно просто использовать метод setBadgeMargin. Потому что это изменит badgeMarginH и badgeMarginV, которые применяются в методе show . С его помощью мы можем свободно и динамически изменять положение значка.
ха-ха…. Надеюсь, полезно для других