12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- package com.afollestad.materialdialogs.internal;
- import android.annotation.TargetApi;
- import android.content.Context;
- import android.graphics.drawable.Drawable;
- import android.os.Build;
- import android.support.v7.internal.text.AllCapsTransformationMethod;
- import android.util.AttributeSet;
- import android.view.Gravity;
- import android.widget.TextView;
- import com.afollestad.materialdialogs.GravityEnum;
- import com.afollestad.materialdialogs.R;
- import com.afollestad.materialdialogs.util.DialogUtils;
- /**
- * @author Kevin Barry (teslacoil) 4/02/2015
- */
- public class MDButton extends TextView {
- private boolean mStacked = false;
- private GravityEnum mStackedGravity;
- private int mStackedEndPadding;
- private Drawable mStackedBackground;
- private Drawable mDefaultBackground;
- public MDButton(Context context, AttributeSet attrs) {
- super(context, attrs);
- init(context, attrs, 0, 0);
- }
- public MDButton(Context context, AttributeSet attrs, int defStyleAttr) {
- super(context, attrs, defStyleAttr);
- init(context, attrs, defStyleAttr, 0);
- }
- @TargetApi(Build.VERSION_CODES.LOLLIPOP)
- public MDButton(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
- super(context, attrs, defStyleAttr, defStyleRes);
- init(context, attrs, defStyleAttr, defStyleRes);
- }
- private void init(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
- mStackedEndPadding = context.getResources()
- .getDimensionPixelSize(R.dimen.md_dialog_frame_margin);
- mStackedGravity = GravityEnum.END;
- }
- /**
- * Set if the button should be displayed in stacked mode.
- * This should only be called from MDRootLayout's onMeasure, and we must be measured
- * after calling this.
- */
- /* package */ void setStacked(boolean stacked, boolean force) {
- if (mStacked != stacked || force) {
- setGravity(stacked ? (Gravity.CENTER_VERTICAL | mStackedGravity.getGravityInt()) : Gravity.CENTER);
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
- //noinspection ResourceType
- setTextAlignment(stacked ? mStackedGravity.getTextAlignment() : TEXT_ALIGNMENT_CENTER);
- }
- DialogUtils.setBackgroundCompat(this, stacked ? mStackedBackground : mDefaultBackground);
- if (stacked) {
- setPadding(mStackedEndPadding, getPaddingTop(), mStackedEndPadding, getPaddingBottom());
- } /* Else the padding was properly reset by the drawable */
- }
- }
- public void setStackedGravity(GravityEnum gravity) {
- mStackedGravity = gravity;
- }
- public void setStackedSelector(Drawable d) {
- mStackedBackground = d;
- if (mStacked)
- setStacked(true, true);
- }
- public void setDefaultSelector(Drawable d) {
- mDefaultBackground = d;
- if (!mStacked)
- setStacked(false, true);
- }
- public void setAllCapsCompat(boolean allCaps) {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
- setAllCaps(allCaps);
- } else {
- if (allCaps)
- setTransformationMethod(new AllCapsTransformationMethod(getContext()));
- else
- setTransformationMethod(null);
- }
- }
- }
|