예제 #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 initializeLikeButton(Context context) {
    likeButton =
        new LikeButton(
            context, likeActionController != null ? likeActionController.isObjectLiked() : false);
    likeButton.setOnClickListener(
        new OnClickListener() {
          @Override
          public void onClick(View v) {
            toggleLike();
          }
        });

    LinearLayout.LayoutParams buttonLayout =
        new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

    likeButton.setLayoutParams(buttonLayout);
  }
예제 #3
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;
    }
  }