1
0
Эх сурвалжийг харах

More RTL improvements

Gravity will now use the correct method depending on the version, and drop the custom alignment enum
Henri Sweers 10 жил өмнө
parent
commit
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)