Reputation: 753
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
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
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
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
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
Reputation: 9225
Just take the height from the button with:
button.getHeight();
set your text size with:
button.setTextSize();
Upvotes: 1