medyo / Fancybuttons

Icons, Borders, Radius ... for Android buttons
1.77k stars 397 forks source link

If I call "setIconResource" method to a button created by LayoutInflater, all layout information removed. #61

Open jongidal opened 8 years ago

jongidal commented 8 years ago

This is a screenshot captured before I call "setIconResouce" method. device-2016-05-10-143605

The layout of the button is borken. screenshot_20160510-143433

medyo commented 8 years ago

It's seems there is a bug somewhere, could you share with us your code

brkckr commented 8 years ago

Same problem applies to me. I'm using the FancyButton as the row of Recyclerview. And recyclerview has the GridLayoutManager and custom adapter. After adding below lines to adapter, the button which has iconResource as string, ruins the layout's harmony.

button.setIconResource("►"); button.setIconPosition(FancyButton.POSITION_LEFT); button.setFontIconSize(20);

medyo commented 8 years ago

@brkckr could you share a demo project or a snippet so I could check the issue.

brkckr commented 8 years ago
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    xmlns:fancy="http://schemas.android.com/apk/res-auto"
    android:weightSum="6"
    android:orientation="vertical"
    android:layout_height="match_parent">

    <LinearLayout
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_weight="1"
        android:layout_height="0dp">

        <mehdi.sakout.fancybuttons.FancyButton
            android:id="@+id/btn_spotify1"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="match_parent"
            fancy:fb_borderColor="#FFFFFF"
            fancy:fb_borderWidth="1dp"
            fancy:fb_defaultColor="#7ab800"
            fancy:fb_focusColor="#9bd823"
            fancy:fb_fontIconResource="&#xf04b;"
            fancy:fb_iconPosition="left"
            fancy:fb_radius="30dp"
            fancy:fb_text="SHUFFLE PLAY"
            fancy:fb_textColor="#FFFFFF" />

        <mehdi.sakout.fancybuttons.FancyButton
            android:id="@+id/btn_spotify2"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="match_parent"
            fancy:fb_borderColor="#FFFFFF"
            fancy:fb_borderWidth="1dp"
            fancy:fb_defaultColor="#7ab800"
            fancy:fb_focusColor="#9bd823"
            fancy:fb_fontIconResource="&#xf04b;"
            fancy:fb_iconPosition="left"
            fancy:fb_radius="30dp"
            fancy:fb_text="SHUFFLE PLAY"
            fancy:fb_textColor="#FFFFFF" />

        <mehdi.sakout.fancybuttons.FancyButton
            android:id="@+id/btn_spotify3"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="match_parent"
            fancy:fb_borderColor="#FFFFFF"
            fancy:fb_borderWidth="1dp"
            fancy:fb_defaultColor="#7ab800"
            fancy:fb_focusColor="#9bd823"
            fancy:fb_fontIconResource="&#xf04b;"
            fancy:fb_iconPosition="left"
            fancy:fb_radius="30dp"
            fancy:fb_text="SHUFFLE PLAY"
            fancy:fb_textColor="#FFFFFF" />

        <mehdi.sakout.fancybuttons.FancyButton
            android:id="@+id/btn_spotify4"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="match_parent"
            fancy:fb_borderColor="#FFFFFF"
            fancy:fb_borderWidth="1dp"
            fancy:fb_defaultColor="#7ab800"
            fancy:fb_focusColor="#9bd823"
            fancy:fb_fontIconResource="&#xf04b;"
            fancy:fb_iconPosition="left"
            fancy:fb_radius="30dp"
            fancy:fb_text="SHUFFLE PLAY"
            fancy:fb_textColor="#FFFFFF" />

        <mehdi.sakout.fancybuttons.FancyButton
            android:id="@+id/btn_spotify5"
            android:layout_width="0dp"
            android:layout_weight="1"
            android:layout_height="match_parent"
            fancy:fb_borderColor="#FFFFFF"
            fancy:fb_borderWidth="1dp"
            fancy:fb_defaultColor="#7ab800"
            fancy:fb_focusColor="#9bd823"
            fancy:fb_radius="30dp"
            fancy:fb_text="SHUFFLE PLAY"
            fancy:fb_textColor="#FFFFFF" />

    </LinearLayout>

</LinearLayout>

        FancyButton button5 = (FancyButton) findViewById(R.id.btn_spotify5);
        button5.setIconResource("►");
        button5.setIconPosition(FancyButton.POSITION_LEFT);

It works like a champ when you set "IconResource" in xml side. But if you change it by programmatically, it ruins layout's harmony. Check the below images please. In addition, thank you for such a super library. @medyo seemsbug okay