private void initialize() {
    setOrientation(VERTICAL);
    if (isInEditMode()) {
      return;
    }

    View view =
        LayoutInflater.from(mContext).inflate(R.layout.widget_float_labeled_edit_text, this);

    hintTextView = (TextView) view.findViewById(R.id.FloatLabeledEditTextHint);
    editText = (EditText) view.findViewById(R.id.FloatLabeledEditTextEditText);

    if (hint != null) {
      setHint(hint);
    }

    editText.setImeOptions(imeOptions);

    if (imeActionId > -1 && !TextUtils.isEmpty(imeActionLabel)) {
      editText.setImeActionLabel(imeActionLabel, imeActionId);
    }

    editText.setSingleLine(singleLine);
    hintTextView.setTextColor(hintColor != null ? hintColor : ColorStateList.valueOf(Color.BLACK));
    editText.setTextColor(textColor != null ? textColor : ColorStateList.valueOf(Color.BLACK));

    if (inputType != EditorInfo.TYPE_NULL) {
      editText.setInputType(inputType);
    }

    hintTextView.setVisibility(View.INVISIBLE);
    AnimatorProxy.wrap(hintTextView).setAlpha(0); // Need this for compat reasons
    editText.addTextChangedListener(onTextChanged);
    editText.setOnFocusChangeListener(onFocusChanged);

    editText.setOnClickListener(
        new OnClickListener() {
          @Override
          public void onClick(View v) {
            if (mClickListener != null) mClickListener.onClick(FloatLabeledEditText.this);
          }
        });
  }