Библиотека Android на github, Viewbadge, как установить положение rightMargin?

#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 . С его помощью мы можем свободно и динамически изменять положение значка.

ха-ха…. Надеюсь, полезно для других