Akh
Akh

Reputation: 6043

How to use two different font sizes for button text in Android?

How could I implement a button background for ImageButton or Button which contains 2 textview each using different font sizes ? I can't use static images as background and I need to achieve this either using XML or programmatically.

This is a numeric keypad and it carries a numeric value and a set of alphabets each of which uses different font sizes and needs to be set as button text.

enter image description here

Here are some of the suggestions that pop-up on my brain but this seems to have limitations since I want to reuse the UI component and avoid code repetition.

  1. Create a layout XML containing 2 textfields and set that as background on the button. But how can I get a reference of these textview fields to set the value on them in the MyActivity.java?

  2. Use a layeredlist? Still same problem reference of textviews

  3. Or create a custom view and inflate layout mentioned in step 1. This solution resolves my problem.

Does any other solution exist for this UI requirement?

Upvotes: 4

Views: 5713

Answers (3)

Oya
Oya

Reputation: 903

Hopefully this will help. This off course is not the only solution but it is a pretty simple one. Add the xml part in your xml instead of the button.

XML

<LinearLayout
    android:id="@+id/button_layout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20sp" 
        android:text="5"/>
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="12sp" 
        android:text="ABC"/>

</LinearLayout>

Code

LinearLayout button= (LinearLayout)findViewById(R.id.button_layout);
button.setOnClickListener(new OnClickListener() {
    
    @Override
    public void onClick(View v) {
        // TODO DO whatever you want to do here
        
    }
});

Upvotes: 9

D. Bachmann
D. Bachmann

Reputation: 1

simple solution: put a label on top of the button..

Upvotes: 0

MilapTank
MilapTank

Reputation: 10076

For your button you can use code like this

don't forget put font in your Assets folder

 Button btnA=(Button) findViewById(R.id.button1);
 Typeface typeface = Typeface.createFromAsset(getAssets(), "yourFont.ttf");
 btnA.setText("my custom font");
 btnA.setTypeface(typeface);
 btnA.setTextSize(20);//as per your size

and for more reference see this

do as your second button if this helps let me know thanks...

Upvotes: 1

Related Questions