Ace Falobi
Ace Falobi

Reputation: 753

Adjust button text size with button height

I have a button that I set a particular height for and have the button text fill the entire button. I achieved this before by setting textSize to a specific dimension to fill the button.

But the problem is whenever the user changes the system font of his/her device, it affects the button text and the text overflows and gets cut in the button. How can I make the button text size match the height of the button?

Edit

The button's height is set to match_parent for it's parent widget

        <android.support.v7.widget.Toolbar
            android:id="@+id/toolbar"
            android:layout_width="match_parent"
            android:layout_height="?attr/actionBarSize"
            android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay">
            <RelativeLayout
                android:layout_marginEnd="16dp"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_marginRight="16dp">
                <Button
                    android:id="@+id/text_toolbar"
                    style="?android:attr/borderlessButtonStyle"
                    android:layout_centerInParent="true"
                    android:layout_width="wrap_content"
                    android:layout_height="match_parent"
                    android:textSize="36sp"
                    android:textColor="@color/white"
                    android:text="@string/k_i_n_e_c_t"/>
            </RelativeLayout>
        </android.support.v7.widget.Toolbar>

Upvotes: 0

Views: 1948

Answers (5)

Rajan
Rajan

Reputation: 19

You can achieve this by setting width, height & wrap_content of the button.

Or you can try by fixing the size of the button and change the button size dynamically as per the text size.

Upvotes: 0

Omkar
Omkar

Reputation: 3100

try to wrap_content property to both RelativeLayout and Button like above code ,

  <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme.PopupOverlay">
        <RelativeLayout
            android:layout_marginEnd="16dp"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginRight="16dp">
            <Button
                android:id="@+id/text_toolbar"
                style="?android:attr/borderlessButtonStyle"
                android:layout_centerInParent="true"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:textSize="36sp"
                android:textColor="@color/white"
                android:text="@string/k_i_n_e_c_t"
                android:padding="2sp"/>
        </RelativeLayout>
    </android.support.v7.widget.Toolbar>

Upvotes: 1

Arun Shankar
Arun Shankar

Reputation: 2295

I guess you must have used dp as the unit for your textsize. It is preferable to use sp for text dimensions.

Why should we use sp for font sizes in Android?

Upvotes: 0

Shiva kumar
Shiva kumar

Reputation: 71

If you use this wrap_content the text does't overflow

<Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Upload Image"
            android:id="@+id/buttonUpload" />

Upvotes: 1

Android Geek
Android Geek

Reputation: 9225

Just take the height from the button with:

button.getHeight();

set your text size with:

button.setTextSize();

Upvotes: 1

Related Questions