Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to add padding to a tabs label?

Tags:

android

I just started programming for android. I'm using a tab based layout in my app. I would like to put some padding around the tab label so that it's not so close to the icon.

here is how the label is put in:

in main.java

spec = tabHost.newTabSpec("tab1").setIndicator(this.getString(R.string.tab1), res.getDrawable(R.drawable.ic_tab1)).setContent(intent);

and in string.xml

<string name="tab1">my tab label</string>

I've been searching and trying to figure this out for several hours now. I could just make the icons smaller in about two minutes but I like their size.

Can anyone suggest the best way to do simple formatting to the tab label?

like image 720
logicbird Avatar asked Nov 28 '25 09:11

logicbird


2 Answers

tabHost.addTab(tabHost.newTabSpec("tab1").setContent(
            new Intent(this, DealCities.class)).setIndicator(prepareTabView("Deals",R.drawable.deal)));

Where prepareTabView is a method.. In these method Inflate a view and add Image and Text as follows :

private View prepareTabView(String text, int resId) {
    View view = LayoutInflater.from(this).inflate(R.layout.tabs, null);
    ImageView iv = (ImageView) view.findViewById(R.id.TabImageView);
    TextView tv = (TextView) view.findViewById(R.id.TabTextView);
    iv.setImageResource(resId);
    tv.setText(text);
    return view;
}

Where tabs is the inflated view and its xml as follows :

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:id="@+id/TabLayout"  android:background="@drawable/tab_bg_selector"
android:layout_width="fill_parent" android:layout_height="fill_parent"
 android:gravity="center"
padding="5dip">


<ImageView android:id="@+id/TabImageView" android:src="@drawable/icon"
    android:layout_width="wrap_content" android:layout_height="wrap_content"/>
<TextView android:id="@+id/TabTextView" android:text="Text"
    android:paddingTop="5dip" android:layout_width="wrap_content"
    android:layout_height="wrap_content" android:textColor="@color/black"
    android:textAppearance="@style/TabTextViewStyle" />
</LinearLayout>

Now you can make Your Paddings as you like..

like image 176
Venky Avatar answered Nov 29 '25 23:11

Venky


A simpler solution is :

 for (int i = 0; i < tabHost.getTabWidget().getChildCount(); i++) {
     tabHost.getTabWidget().getChildAt(i).setPadding(10,10,10,10); 
 }
like image 33
Poppyto Avatar answered Nov 29 '25 23:11

Poppyto



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!