Преглед на файлове

More RTL improvements

Gravity will now use the correct method depending on the version, and drop the custom alignment enum
Henri Sweers преди 10 години
родител
ревизия
46330cb4f9

+ 1 - 1
README.md

@@ -362,7 +362,7 @@ new MaterialDialog.Builder(this)
         .positiveColor(materialRed500)
         .negativeColor(materialRed500)
         .neutralColor(materialRed500)
-        .titleAlignment(Alignment.CENTER)
+        .titleGravity(Gravity.CENTER_HORIZONTAL)
         .titleColor(materialRed500)
         .contentColor(Color.WHITE)
         .theme(Theme.DARK)

+ 0 - 16
library/src/main/java/com/afollestad/materialdialogs/Alignment.java

@@ -1,16 +0,0 @@
-package com.afollestad.materialdialogs;
-
-/**
- * @author Aidan Follestad (afollestad)
- */
-public enum Alignment {
-    /**
-     * Same as left for left-to-right layouts.
-     */
-    START,
-    CENTER,
-    /**
-     * Same as right for left-to-right layouts.
-     */
-    END
-}

+ 37 - 14
library/src/main/java/com/afollestad/materialdialogs/MaterialDialog.java

@@ -1,6 +1,7 @@
 package com.afollestad.materialdialogs;
 
 import android.annotation.SuppressLint;
+import android.annotation.TargetApi;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.res.ColorStateList;
@@ -13,6 +14,7 @@ import android.os.Build;
 import android.support.annotation.ArrayRes;
 import android.support.annotation.ColorRes;
 import android.support.annotation.DrawableRes;
+import android.support.annotation.IntDef;
 import android.support.annotation.LayoutRes;
 import android.support.annotation.NonNull;
 import android.support.annotation.Nullable;
@@ -50,6 +52,9 @@ import java.util.List;
  */
 public class MaterialDialog extends DialogBase implements View.OnClickListener {
 
+    @IntDef({Gravity.START, Gravity.CENTER_HORIZONTAL, Gravity.END})
+    public @interface GravityInt {}
+
     protected View view;
     protected ListView listView;
     protected ImageView icon;
@@ -113,10 +118,12 @@ public class MaterialDialog extends DialogBase implements View.OnClickListener {
         } else {
             content.setLinkTextColor(mBuilder.positiveColor);
         }
-        if (builder.contentAlignment == Alignment.CENTER) {
-            content.setGravity(Gravity.CENTER_HORIZONTAL);
-        } else if (builder.contentAlignment == Alignment.END) {
-            content.setGravity(Gravity.START);
+
+        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
+            //noinspection ResourceType
+            title.setTextAlignment(gravityToAlignment(builder.titleGravity));
+        } else {
+            title.setGravity(builder.titleGravity);
         }
 
         if (builder.contentColor != -1) {
@@ -222,10 +229,12 @@ public class MaterialDialog extends DialogBase implements View.OnClickListener {
                 final int fallback = DialogUtils.resolveColor(getContext(), android.R.attr.textColorPrimary);
                 title.setTextColor(DialogUtils.resolveColor(getContext(), R.attr.md_title_color, fallback));
             }
-            if (builder.titleAlignment == Alignment.CENTER) {
-                title.setGravity(Gravity.CENTER_HORIZONTAL);
-            } else if (builder.titleAlignment == Alignment.END) {
-                title.setGravity(Gravity.END);
+
+            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
+                //noinspection ResourceType
+                content.setTextAlignment(gravityToAlignment(builder.contentGravity));
+            } else {
+                content.setGravity(builder.contentGravity);
             }
         }
 
@@ -264,6 +273,20 @@ public class MaterialDialog extends DialogBase implements View.OnClickListener {
         }
     }
 
+    @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
+    private static int gravityToAlignment(@GravityInt int gravity) {
+        switch (gravity) {
+            case Gravity.START:
+                return View.TEXT_ALIGNMENT_VIEW_START;
+            case Gravity.CENTER_HORIZONTAL:
+                return View.TEXT_ALIGNMENT_CENTER;
+            case Gravity.END:
+                return View.TEXT_ALIGNMENT_VIEW_END;
+            default:
+                return View.TEXT_ALIGNMENT_VIEW_START;
+        }
+    }
+
     @Override
     public void onShow(DialogInterface dialog) {
         super.onShow(dialog); // calls any external show listeners
@@ -717,8 +740,8 @@ public class MaterialDialog extends DialogBase implements View.OnClickListener {
 
         protected Context context;
         protected CharSequence title;
-        protected Alignment titleAlignment = Alignment.START;
-        protected Alignment contentAlignment = Alignment.START;
+        protected @GravityInt int titleGravity = Gravity.START;
+        protected @GravityInt int contentGravity = Gravity.START;
         protected int titleColor = -1;
         protected int contentColor = -1;
         protected CharSequence content;
@@ -793,8 +816,8 @@ public class MaterialDialog extends DialogBase implements View.OnClickListener {
             return this;
         }
 
-        public Builder titleAlignment(Alignment align) {
-            this.titleAlignment = align;
+        public Builder titleGravity(@GravityInt int gravity) {
+            this.titleGravity = gravity;
             return this;
         }
 
@@ -861,8 +884,8 @@ public class MaterialDialog extends DialogBase implements View.OnClickListener {
             return this;
         }
 
-        public Builder contentAlignment(Alignment align) {
-            this.contentAlignment = align;
+        public Builder contentGravity(@GravityInt int gravity) {
+            this.contentGravity = gravity;
             return this;
         }
 

+ 1 - 0
sample/src/main/AndroidManifest.xml

@@ -7,6 +7,7 @@
         android:allowBackup="true"
         android:label="@string/app_name"
         android:icon="@drawable/ic_launcher"
+        android:supportsRtl="true"
         android:theme="@style/AppTheme">
 
         <activity

+ 2 - 2
sample/src/main/java/com/afollestad/materialdialogssample/MainActivity.java

@@ -8,6 +8,7 @@ import android.text.Html;
 import android.text.InputType;
 import android.text.TextWatcher;
 import android.text.method.PasswordTransformationMethod;
+import android.view.Gravity;
 import android.view.Menu;
 import android.view.MenuItem;
 import android.view.View;
@@ -19,7 +20,6 @@ import android.widget.EditText;
 import android.widget.ListView;
 import android.widget.Toast;
 
-import com.afollestad.materialdialogs.Alignment;
 import com.afollestad.materialdialogs.DialogAction;
 import com.afollestad.materialdialogs.MaterialDialog;
 import com.afollestad.materialdialogs.Theme;
@@ -409,7 +409,7 @@ public class MainActivity extends ActionBarActivity implements FolderSelectorDia
                 .negativeText(R.string.disagree)
                 .positiveColorRes(R.color.material_red_400)
                 .negativeColorRes(R.color.material_red_400)
-                .titleAlignment(Alignment.CENTER)
+                .titleGravity(Gravity.CENTER_HORIZONTAL)
                 .titleColorRes(R.color.material_red_400)
                 .contentColorRes(android.R.color.white)
                 .theme(Theme.DARK)