Browse Source

Two separate selectors: button and normal;
Normal selector for lists and stacked buttons
Button selector for side-by-side buttons
Padding in selected item drawable replaces padding in styles

plusCubed 10 years ago
parent
commit
38bf006038

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

@@ -396,7 +396,7 @@ public class MaterialDialog extends DialogBase implements View.OnClickListener,
          * From: http://www.google.com/design/spec/components/dialogs.html#dialogs-specs
          */
         final int dialogWidth = getWindow().getDecorView().getMeasuredWidth();
-        final int eightDp = (int) getContext().getResources().getDimension(R.dimen.md_button_padding_horizontal_external);
+        final int eightDp = (int) getContext().getResources().getDimension(R.dimen.md_button_padding_horizontal);
         final int sixteenDp = (int) getContext().getResources().getDimension(R.dimen.md_button_padding_frame_side);
         return (dialogWidth - sixteenDp - sixteenDp - eightDp) / 2;
     }
@@ -433,7 +433,7 @@ public class MaterialDialog extends DialogBase implements View.OnClickListener,
         final int maxWidth = calculateMaxButtonWidth();
         Log.v("MD_Stacking", "Max button width: " + maxWidth);
         final Paint paint = positiveButton.getPaint();
-        final int eightDp = (int) getContext().getResources().getDimension(R.dimen.md_button_padding_horizontal_external);
+        final int eightDp = (int) getContext().getResources().getDimension(R.dimen.md_button_padding_horizontal);
         isStacked = false;
 
         if (this.positiveText != null) {
@@ -490,7 +490,7 @@ public class MaterialDialog extends DialogBase implements View.OnClickListener,
             setTypeface(positiveButton, mediumFont);
             positiveButton.setText(this.positiveText);
             positiveButton.setTextColor(getActionTextStateList(this.positiveColor));
-            setBackgroundCompat(positiveButton, DialogUtils.resolveDrawable(getContext(), R.attr.md_selector));
+            setBackgroundCompat(positiveButton, DialogUtils.resolveDrawable(getContext(), isStacked ? R.attr.md_selector : R.attr.md_btn_selector));
             positiveButton.setTag(POSITIVE);
             positiveButton.setOnClickListener(this);
         } else {
@@ -503,7 +503,7 @@ public class MaterialDialog extends DialogBase implements View.OnClickListener,
             setTypeface(neutralButton, mediumFont);
             neutralButton.setVisibility(View.VISIBLE);
             neutralButton.setTextColor(getActionTextStateList(this.neutralColor));
-            setBackgroundCompat(neutralButton, DialogUtils.resolveDrawable(getContext(), R.attr.md_selector));
+            setBackgroundCompat(neutralButton, DialogUtils.resolveDrawable(getContext(), isStacked ? R.attr.md_selector : R.attr.md_btn_selector));
             neutralButton.setText(this.neutralText);
             neutralButton.setTag(NEUTRAL);
             neutralButton.setOnClickListener(this);
@@ -517,7 +517,7 @@ public class MaterialDialog extends DialogBase implements View.OnClickListener,
             setTypeface(negativeButton, mediumFont);
             negativeButton.setVisibility(View.VISIBLE);
             negativeButton.setTextColor(getActionTextStateList(this.negativeColor));
-            setBackgroundCompat(negativeButton, DialogUtils.resolveDrawable(getContext(), R.attr.md_selector));
+            setBackgroundCompat(negativeButton, DialogUtils.resolveDrawable(getContext(), isStacked ? R.attr.md_selector : R.attr.md_btn_selector));
             negativeButton.setText(this.negativeText);
             negativeButton.setTag(NEGATIVE);
             negativeButton.setOnClickListener(this);

+ 1 - 1
library/src/main/res/drawable-v21/md_selector_ripple.xml → library/src/main/res/drawable-v21/md_btn_selector_ripple.xml

@@ -1,6 +1,6 @@
 <ripple xmlns:android="http://schemas.android.com/apk/res/android"
     android:color="?android:colorControlHighlight">
 
-    <item android:drawable="@drawable/md_selector" />
+    <item android:drawable="@drawable/md_btn_selector" />
 
 </ripple>

+ 1 - 1
library/src/main/res/drawable-v21/md_selector_ripple_dark.xml → library/src/main/res/drawable-v21/md_btn_selector_ripple_dark.xml

@@ -1,6 +1,6 @@
 <ripple xmlns:android="http://schemas.android.com/apk/res/android"
     android:color="?android:colorControlHighlight">
 
-    <item android:drawable="@drawable/md_selector_dark" />
+    <item android:drawable="@drawable/md_btn_selector_dark" />
 
 </ripple>

+ 17 - 0
library/src/main/res/drawable/md_btn_selected.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<inset xmlns:android="http://schemas.android.com/apk/res/android"
+    android:insetBottom="@dimen/md_button_inset_vertical"
+    android:insetLeft="@dimen/md_button_inset_horizontal"
+    android:insetRight="@dimen/md_button_inset_horizontal"
+    android:insetTop="@dimen/md_button_inset_vertical">
+    <shape xmlns:android="http://schemas.android.com/apk/res/android"
+        android:shape="rectangle">
+        <corners android:radius="@dimen/md_action_corner_radius" />
+        <solid android:color="#D5D5D5" />
+        <padding
+            android:bottom="@dimen/md_button_padding_vertical"
+            android:left="@dimen/md_button_padding_horizontal"
+            android:right="@dimen/md_button_padding_horizontal"
+            android:top="@dimen/md_button_padding_vertical" />
+    </shape>
+</inset>

+ 17 - 0
library/src/main/res/drawable/md_btn_selected_dark.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="utf-8"?>
+<inset xmlns:android="http://schemas.android.com/apk/res/android"
+    android:insetBottom="@dimen/md_button_inset_vertical"
+    android:insetLeft="@dimen/md_button_inset_horizontal"
+    android:insetRight="@dimen/md_button_inset_horizontal"
+    android:insetTop="@dimen/md_button_inset_vertical">
+    <shape xmlns:android="http://schemas.android.com/apk/res/android"
+        android:shape="rectangle">
+        <corners android:radius="@dimen/md_action_corner_radius" />
+        <solid android:color="#404040" />
+        <padding
+            android:bottom="@dimen/md_button_padding_vertical"
+            android:left="@dimen/md_button_padding_horizontal"
+            android:right="@dimen/md_button_padding_horizontal"
+            android:top="@dimen/md_button_padding_vertical" />
+    </shape>
+</inset>

+ 7 - 0
library/src/main/res/drawable/md_btn_selector.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android" android:exitFadeDuration="@android:integer/config_shortAnimTime">
+
+    <item android:drawable="@drawable/md_btn_selected" android:state_pressed="true" />
+    <item android:drawable="@drawable/md_transparent" />
+
+</selector>

+ 7 - 0
library/src/main/res/drawable/md_btn_selector_dark.xml

@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android" android:exitFadeDuration="@android:integer/config_shortAnimTime">
+
+    <item android:drawable="@drawable/md_btn_selected_dark" android:state_pressed="true" />
+    <item android:drawable="@drawable/md_transparent" />
+
+</selector>

+ 4 - 12
library/src/main/res/drawable/md_item_selected.xml

@@ -1,13 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<inset xmlns:android="http://schemas.android.com/apk/res/android"
-    android:insetBottom="@dimen/md_button_inset_vertical"
-    android:insetLeft="@dimen/md_button_inset_horizontal"
-    android:insetRight="@dimen/md_button_inset_horizontal"
-    android:insetTop="@dimen/md_button_inset_vertical">
-    <shape
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        android:shape="rectangle">
-        <corners android:radius="@dimen/md_action_corner_radius" />
-        <solid android:color="#D5D5D5" />
-    </shape>
-</inset>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="#D5D5D5" />
+</shape>

+ 4 - 12
library/src/main/res/drawable/md_item_selected_dark.xml

@@ -1,13 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<inset xmlns:android="http://schemas.android.com/apk/res/android"
-    android:insetBottom="@dimen/md_button_inset_vertical"
-    android:insetLeft="@dimen/md_button_inset_horizontal"
-    android:insetRight="@dimen/md_button_inset_horizontal"
-    android:insetTop="@dimen/md_button_inset_vertical">
-    <shape
-        xmlns:android="http://schemas.android.com/apk/res/android"
-        android:shape="rectangle">
-        <corners android:radius="@dimen/md_action_corner_radius" />
-        <solid android:color="#404040" />
-    </shape>
-</inset>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="#404040" />
+</shape>

+ 1 - 1
library/src/main/res/drawable/md_selector.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android" android:exitFadeDuration="@android:integer/config_shortAnimTime">
 
-    <item android:state_pressed="true" android:drawable="@drawable/md_item_selected" />
+    <item android:drawable="@drawable/md_item_selected" android:state_pressed="true" />
     <item android:drawable="@drawable/md_transparent" />
 
 </selector>

+ 1 - 1
library/src/main/res/drawable/md_selector_dark.xml

@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <selector xmlns:android="http://schemas.android.com/apk/res/android" android:exitFadeDuration="@android:integer/config_shortAnimTime">
 
-    <item android:state_pressed="true" android:drawable="@drawable/md_item_selected_dark" />
+    <item android:drawable="@drawable/md_item_selected_dark" android:state_pressed="true" />
     <item android:drawable="@drawable/md_transparent" />
 
 </selector>

+ 2 - 1
library/src/main/res/values-v11/styles.xml

@@ -3,13 +3,14 @@
 
     <style name="MD_Light" parent="android:Theme.Holo.Light.Dialog">
         <item name="md_divider">@color/md_divider_black</item>
+        <item name="md_btn_selector">@drawable/md_btn_selector</item>
         <item name="md_selector">@drawable/md_selector</item>
         <item name="android:windowBackground">@android:color/transparent</item>
     </style>
 
     <style name="MD_Dark" parent="android:Theme.Holo.Dialog">
         <item name="md_divider">@color/md_divider_white</item>
-        <item name="md_selector">@drawable/md_selector_dark</item>
+        <item name="md_btn_selector">@drawable/md_btn_selector_dark</item>
         <item name="android:windowBackground">@android:color/transparent</item>
     </style>
 

+ 4 - 2
library/src/main/res/values-v21/styles.xml

@@ -3,12 +3,14 @@
 
     <style name="MD_Light" parent="android:Theme.Material.Light.Dialog.Alert">
         <item name="md_divider">@color/md_divider_black</item>
-        <item name="md_selector">@drawable/md_selector_ripple</item>
+        <item name="md_selector">?android:selectableItemBackground</item>
+        <item name="md_btn_selector">@drawable/md_btn_selector_ripple</item>
     </style>
 
     <style name="MD_Dark" parent="android:Theme.Material.Dialog.Alert">
         <item name="md_divider">@color/md_divider_white</item>
-        <item name="md_selector">@drawable/md_selector_ripple_dark</item>
+        <item name="md_selector">?android:selectableItemBackground</item>
+        <item name="md_btn_selector">@drawable/md_btn_selector_ripple_dark</item>
     </style>
 
 </resources>

+ 1 - 0
library/src/main/res/values/attrs.xml

@@ -2,6 +2,7 @@
 <resources>
 
     <attr name="md_selector" format="reference" />
+    <attr name="md_btn_selector" format="reference" />
     <attr name="md_divider" format="color" />
 
     <attr name="md_dark_theme" format="boolean" />

+ 3 - 3
library/src/main/res/values/dimens.xml

@@ -9,11 +9,11 @@
     <dimen name="md_button_min_width">64dp</dimen>
 
     <!-- Above and below buttons, 36+12=48 for the height of the button frame -->
-    <dimen name="md_button_padding_vertical">12dp</dimen>
     <dimen name="md_button_inset_vertical">6dp</dimen>
     <dimen name="md_button_inset_horizontal">4dp</dimen>
-    <dimen name="md_button_padding_horizontal_internal">8dp</dimen>
-    <dimen name="md_button_padding_horizontal_external">8dp</dimen>
+    <dimen name="md_button_padding_horizontal">8dp</dimen>
+    <dimen name="md_button_padding_vertical">4dp</dimen>
+
     <dimen name="md_button_padding_horizontal_internalexternal">32dp</dimen>
     <dimen name="md_button_padding_frame_side">16dp</dimen>
     <dimen name="md_button_padding_frame_bottom">8dp</dimen>

+ 2 - 6
library/src/main/res/values/styles.xml

@@ -3,12 +3,13 @@
 
     <style name="MD_Light" parent="Theme_Light_Dialog">
         <item name="md_divider">@color/md_divider_black</item>
+        <item name="md_btn_selector">@drawable/md_btn_selector</item>
         <item name="md_selector">@drawable/md_selector</item>
     </style>
 
     <style name="MD_Dark" parent="android:Theme.Dialog">
         <item name="md_divider">@color/md_divider_white</item>
-        <item name="md_selector">@drawable/md_selector_dark</item>
+        <item name="md_btn_selector">@drawable/md_btn_selector_dark</item>
         <item name="android:windowFrame">@null</item>
         <item name="android:windowBackground">@android:color/transparent</item>
         <item name="android:windowContentOverlay">@null</item>
@@ -35,11 +36,6 @@
         <item name="android:layout_height">@dimen/md_button_height</item>
         <item name="android:minWidth">@dimen/md_button_min_width</item>
 
-        <item name="android:paddingTop">@dimen/md_button_padding_vertical</item>
-        <item name="android:paddingBottom">@dimen/md_button_padding_vertical</item>
-        <item name="android:paddingLeft">@dimen/md_button_padding_horizontal_internal</item>
-        <item name="android:paddingRight">@dimen/md_button_padding_horizontal_internal</item>
-        <item name="android:layout_marginLeft">@dimen/md_button_padding_horizontal_external</item>
     </style>
 
     <!-- Light dialog theme for devices prior Honeycomb -->