Пример #1
0
  private void updateLikeStateAndLayout() {
    if (likeActionController == null) {
      likeButton.setLikeState(false);
      socialSentenceView.setText(null);
      likeBoxCountView.setText(null);
    } else {
      likeButton.setLikeState(likeActionController.isObjectLiked());
      socialSentenceView.setText(likeActionController.getSocialSentence());
      likeBoxCountView.setText(likeActionController.getLikeCountString());
    }

    updateLayout();
  }
Пример #2
0
 private void updateBoxCountCaretPosition() {
   switch (auxiliaryViewPosition) {
     case TOP:
       likeBoxCountView.setCaretPosition(LikeBoxCountView.LikeBoxCountViewCaretPosition.BOTTOM);
       break;
     case BOTTOM:
       likeBoxCountView.setCaretPosition(LikeBoxCountView.LikeBoxCountViewCaretPosition.TOP);
       break;
     case INLINE:
       likeBoxCountView.setCaretPosition(
           horizontalAlignment == HorizontalAlignment.RIGHT
               ? LikeBoxCountView.LikeBoxCountViewCaretPosition.RIGHT
               : LikeBoxCountView.LikeBoxCountViewCaretPosition.LEFT);
       break;
   }
 }
Пример #3
0
  private void initializeLikeCountView(Context context) {
    likeBoxCountView = new LikeBoxCountView(context);

    LinearLayout.LayoutParams likeCountViewLayout =
        new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
    likeBoxCountView.setLayoutParams(likeCountViewLayout);
  }
Пример #4
0
  private void updateLayout() {
    // Make sure the container is horizontally aligned according to specifications.
    LayoutParams containerViewLayoutParams = (LayoutParams) containerView.getLayoutParams();
    LinearLayout.LayoutParams buttonLayoutParams =
        (LinearLayout.LayoutParams) likeButton.getLayoutParams();
    int viewGravity =
        horizontalAlignment == HorizontalAlignment.LEFT
            ? Gravity.LEFT
            : horizontalAlignment == HorizontalAlignment.CENTER
                ? Gravity.CENTER_HORIZONTAL
                : Gravity.RIGHT;

    containerViewLayoutParams.gravity = viewGravity | Gravity.TOP;
    buttonLayoutParams.gravity = viewGravity;

    // Choose the right auxiliary view to make visible.
    socialSentenceView.setVisibility(GONE);
    likeBoxCountView.setVisibility(GONE);

    View auxView;
    if (likeViewStyle == Style.STANDARD
        && likeActionController != null
        && !Utility.isNullOrEmpty(likeActionController.getSocialSentence())) {
      auxView = socialSentenceView;
    } else if (likeViewStyle == Style.BOX_COUNT
        && likeActionController != null
        && !Utility.isNullOrEmpty(likeActionController.getLikeCountString())) {
      updateBoxCountCaretPosition();
      auxView = likeBoxCountView;
    } else {
      // No more work to be done.
      return;
    }
    auxView.setVisibility(VISIBLE);

    // Now position the auxiliary view properly
    LinearLayout.LayoutParams auxViewLayoutParams =
        (LinearLayout.LayoutParams) auxView.getLayoutParams();
    auxViewLayoutParams.gravity = viewGravity;

    containerView.setOrientation(
        auxiliaryViewPosition == AuxiliaryViewPosition.INLINE
            ? LinearLayout.HORIZONTAL
            : LinearLayout.VERTICAL);

    if (auxiliaryViewPosition == AuxiliaryViewPosition.TOP
        || (auxiliaryViewPosition == AuxiliaryViewPosition.INLINE
            && horizontalAlignment == HorizontalAlignment.RIGHT)) {
      // Button comes after the auxiliary view. Make sure it is at the end
      containerView.removeView(likeButton);
      containerView.addView(likeButton);
    } else {
      // In all other cases, the button comes first
      containerView.removeView(auxView);
      containerView.addView(auxView);
    }

    switch (auxiliaryViewPosition) {
      case TOP:
        auxView.setPadding(edgePadding, edgePadding, edgePadding, internalPadding);
        break;
      case BOTTOM:
        auxView.setPadding(edgePadding, internalPadding, edgePadding, edgePadding);
        break;
      case INLINE:
        if (horizontalAlignment == HorizontalAlignment.RIGHT) {
          auxView.setPadding(edgePadding, edgePadding, internalPadding, edgePadding);
        } else {
          auxView.setPadding(internalPadding, edgePadding, edgePadding, edgePadding);
        }
        break;
    }
  }