diff --git a/README.md b/README.md
index 23920f1..920cd4c 100644
--- a/README.md
+++ b/README.md
@@ -14,19 +14,17 @@ Icons, Borders, Radius ... for Android buttons
* Border (stroke, radius, color)
* Background (normal, focus)
-* Icon (Drawable, font icon)
- * FontAwesome
- * Custom font
+* Icon (Drawable, font Icon)
* Icon (Position, size)
- * right
- * left
- * top
- * bottom
* Icon Size
* Icon Padding
### Changelog
+- 1.8.4
+ - Fix Text Gravity
+ - Add Ability to define custom radius value for each corner
+
- 1.8.3
- Fixed long searching of font
- Added ability to use android:text, android:textSize, android:testAllCaps attributes
@@ -57,7 +55,7 @@ Icons, Borders, Radius ... for Android buttons
### Installation
- compile 'com.github.medyo:fancybuttons:1.8.3'
+ compile 'com.github.medyo:fancybuttons:1.8.4'
### Usage
@@ -82,7 +80,7 @@ Icons, Borders, Radius ... for Android buttons
| fancy:fb_textFont | setCustomTextFont(String) | FontFamily of the text|
| fancy:fb_textGravity | setTextGravity(Int) | Gravity of the text|
| fancy:fb_iconResource | setIconResource(Drawable) | Drawable icon of the button|
-| fancy:fb_iconPosition | setsetIconPosition(int) | Position of the icon : Left, Right, Top, Bottom|
+| fancy:fb_iconPosition | setIconPosition(int) | Position of the icon : Left, Right, Top, Bottom|
| fancy:fb_fontIconResource | setIconResource(String) | font icon of the button|
| fancy:fb_fontIconSize | setFontIconSize(int) | Size of the icon |
| fancy:fb_iconFont | setCustomIconFont(String) | FontFamily of the icon|
@@ -94,6 +92,7 @@ Icons, Borders, Radius ... for Android buttons
| fancy:fb_disabledTextColor | setDisableTextColor(int) | Disabled Color of button text|
| fancy:fb_disabledBorderColor | setDisableBorderColor(int) | Disabled Color of button border|
| fancy:fb_radius | setRadius(int) | Radius of the button|
+| fancy:fb_radius(TopLeft, TopRight,BottomLeft,BottomRight) | setRadius(int[] radius) | Custom Radius for each button corner|
| fancy:fb_iconPaddingLeft | setIconPadding(int,int,int,int) | Icon Padding|
| fancy:fb_iconPaddingRight | setIconPadding(int,int,int,int) | Icon Padding|
| fancy:fb_iconPaddingTop | setIconPadding(int,int,int,int) | Icon Padding|
@@ -112,8 +111,7 @@ Default Attributes have more priority than Attributes with prefix fancy.
| android:textSize |
| android:textAllCaps |
-#### Supported Getters
-
+#### Supported Getters
| Function | Description |
| ------------- |:-------------:| -----:|
| getText() | Returns Text Value of the button|
diff --git a/fancybuttons_library/src/main/java/mehdi/sakout/fancybuttons/FancyButton.java b/fancybuttons_library/src/main/java/mehdi/sakout/fancybuttons/FancyButton.java
index fc6fa16..9942e8d 100644
--- a/fancybuttons_library/src/main/java/mehdi/sakout/fancybuttons/FancyButton.java
+++ b/fancybuttons_library/src/main/java/mehdi/sakout/fancybuttons/FancyButton.java
@@ -13,6 +13,8 @@
import android.graphics.drawable.RippleDrawable;
import android.graphics.drawable.StateListDrawable;
import android.os.Build;
+import android.text.Html;
+import android.text.SpannableString;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.View;
@@ -61,6 +63,11 @@ public class FancyButton extends LinearLayout{
private int mBorderWidth = 0;
private int mRadius = 0;
+ private int mRadiusTopLeft = 0;
+ private int mRadiusTopRight = 0;
+ private int mRadiusBottomLeft = 0;
+ private int mRadiusBottomRight = 0;
+
private boolean mEnabled = true;
private boolean mTextAllCaps = false;
@@ -299,6 +306,12 @@ private void initAttributesArray(TypedArray attrsArray){
mBorderWidth = (int) attrsArray.getDimension(R.styleable.FancyButtonsAttrs_fb_borderWidth,mBorderWidth);
mRadius = (int)attrsArray.getDimension(R.styleable.FancyButtonsAttrs_fb_radius,mRadius);
+
+ mRadiusTopLeft = (int) attrsArray.getDimension(R.styleable.FancyButtonsAttrs_fb_radiusTopLeft, mRadius);
+ mRadiusTopRight = (int) attrsArray.getDimension(R.styleable.FancyButtonsAttrs_fb_radiusTopRight, mRadius);
+ mRadiusBottomLeft = (int) attrsArray.getDimension(R.styleable.FancyButtonsAttrs_fb_radiusBottomLeft, mRadius);
+ mRadiusBottomRight = (int) attrsArray.getDimension(R.styleable.FancyButtonsAttrs_fb_radiusBottomRight, mRadius);
+
mFontIconSize = (int)attrsArray.getDimension(R.styleable.FancyButtonsAttrs_fb_fontIconSize, mFontIconSize);
mIconPaddingLeft = (int)attrsArray.getDimension(R.styleable.FancyButtonsAttrs_fb_iconPaddingLeft,mIconPaddingLeft);
@@ -364,14 +377,27 @@ private Drawable getRippleDrawable(Drawable defaultDrawable, Drawable focusDrawa
}
+ /**
+ * This method applies radius to the drawable corners
+ * Specify radius for each corner if radius attribute is not defined
+ * @param drawable Drawable
+ */
+ private void applyRadius(GradientDrawable drawable){
+ if (mRadius > 0){
+ drawable.setCornerRadius(mRadius);
+ } else {
+ drawable.setCornerRadii(new float[]{mRadiusTopLeft, mRadiusTopLeft, mRadiusTopRight, mRadiusTopRight,
+ mRadiusBottomRight, mRadiusBottomRight, mRadiusBottomLeft, mRadiusBottomLeft});
+ }
+ }
@SuppressLint("NewApi")
private void setupBackground(){
-
-
// Default Drawable
GradientDrawable defaultDrawable = new GradientDrawable();
- defaultDrawable.setCornerRadius(mRadius);
+ applyRadius(defaultDrawable);
+
+
if (mGhost){
defaultDrawable.setColor(getResources().getColor(android.R.color.transparent)); // Hollow Background
} else {
@@ -380,12 +406,14 @@ private void setupBackground(){
//Focus Drawable
GradientDrawable focusDrawable = new GradientDrawable();
- focusDrawable.setCornerRadius(mRadius);
+ applyRadius(focusDrawable);
+
focusDrawable.setColor(mFocusBackgroundColor);
// Disabled Drawable
GradientDrawable disabledDrawable = new GradientDrawable();
- disabledDrawable.setCornerRadius(mRadius);
+ applyRadius(disabledDrawable);
+
disabledDrawable.setColor(mDisabledBackgroundColor);
disabledDrawable.setStroke(mBorderWidth, mDisabledBorderColor);
@@ -413,7 +441,8 @@ private void setupBackground(){
// Focus/Pressed Drawable
GradientDrawable drawable2 = new GradientDrawable();
- drawable2.setCornerRadius(mRadius);
+ applyRadius(drawable2);
+
if (mGhost){
drawable2.setColor(getResources().getColor(android.R.color.transparent)); // No focus color
} else {
@@ -609,7 +638,7 @@ public void setTextSize(int textSize){
public void setTextGravity(int gravity) {
this.mDefaultTextGravity = gravity;
if (mTextView != null) {
- mTextView.setGravity(gravity);
+ this.setGravity(gravity);
}
}
@@ -733,6 +762,22 @@ public void setRadius(int radius){
}
}
+ /**
+ * Set Border Radius for each button corner
+ * Top Left, Top Right, Bottom Left, Bottom Right
+ * @param radius : Array of int
+ */
+ public void setRadius(int[] radius){
+ this.mRadiusTopLeft = radius[0];
+ this.mRadiusTopRight = radius[1];
+ this.mRadiusBottomLeft = radius[2];
+ this.mRadiusBottomRight = radius[3];
+
+ if(mIconView != null || mFontIconView != null || mTextView != null){
+ this.setupBackground();
+ }
+ }
+
/**
* Set custom font for button Text
* @param fontName : Font Name
diff --git a/fancybuttons_library/src/main/res/values/attrs.xml b/fancybuttons_library/src/main/res/values/attrs.xml
index 6c2ca48..995ec40 100644
--- a/fancybuttons_library/src/main/res/values/attrs.xml
+++ b/fancybuttons_library/src/main/res/values/attrs.xml
@@ -57,6 +57,11 @@
+
+
+
+
+
@@ -70,4 +75,4 @@
-
\ No newline at end of file
+
diff --git a/gradle.properties b/gradle.properties
index d82dc6a..e5aff73 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,6 +1,6 @@
-VERSION_CODE=24
+VERSION_CODE=25
ANDROID_BUILD_MIN_SDK_VERSION=8
ANDROID_BUILD_TARGET_SDK_VERSION=25
ANDROID_BUILD_TOOLS_VERSION=25.0.1
ANDROID_BUILD_SDK_VERSION=25
-VERSION_NAME=1.8.3
\ No newline at end of file
+VERSION_NAME=1.8.4
\ No newline at end of file
diff --git a/resources/fancybuttons_samples.apk b/resources/fancybuttons_samples.apk
index c5c3d35..d1fe365 100644
Binary files a/resources/fancybuttons_samples.apk and b/resources/fancybuttons_samples.apk differ
diff --git a/samples/src/main/res/layout/activity_xml_buttons.xml b/samples/src/main/res/layout/activity_xml_buttons.xml
index 2c1cbb8..24c62ca 100644
--- a/samples/src/main/res/layout/activity_xml_buttons.xml
+++ b/samples/src/main/res/layout/activity_xml_buttons.xml
@@ -268,6 +268,8 @@
fancy:fb_borderWidth="2dp"
fancy:fb_defaultColor="#55acee"
fancy:fb_focusColor="#8cc9f8"
+ fancy:fb_radiusTopLeft="10dp"
+ fancy:fb_radiusBottomRight="10dp"
fancy:fb_iconResource="@drawable/twitter"
fancy:fb_text="Follow me on Twitter"
fancy:fb_textColor="#FFFFFF"/>