Android 如何向选项卡标签添加填充?

Android 如何向选项卡标签添加填充?,android,Android,我刚开始为android编程。我正在我的应用程序中使用基于选项卡的布局。我想在标签周围加一些填充物,这样它就不会离图标太近 以下是标签的放置方式: 在main.java中 spec = tabHost.newTabSpec("tab1").setIndicator(this.getString(R.string.tab1), res.getDrawable(R.drawable.ic_tab1)).setContent(intent); 和string.xml中的 <string nam

我刚开始为android编程。我正在我的应用程序中使用基于选项卡的布局。我想在标签周围加一些填充物,这样它就不会离图标太近

以下是标签的放置方式:

在main.java中

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

<string name="tab1">my tab label</string>
我的选项卡标签
我已经找了好几个小时了,想弄清楚这件事。我可以在大约两分钟内把图标变小,但我喜欢它们的大小

有人能建议对选项卡标签进行简单格式化的最佳方法吗

tabHost.addTab(tabHost.newTabSpec("tab1").setContent(
            new Intent(this, DealCities.class)).setIndicator(prepareTabView("Deals",R.drawable.deal)));
其中prepareTabView是一种方法。。在这些方法中,膨胀视图并添加图像和文本,如下所示:

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;
}
<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>
其中,选项卡是膨胀视图及其xml,如下所示:

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;
}
<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>


现在,您可以随心所欲地制作填充物。

一个更简单的解决方案是:

 for (int i = 0; i < tabHost.getTabWidget().getChildCount(); i++) {
     tabHost.getTabWidget().getChildAt(i).setPadding(10,10,10,10); 
 }
for(int i=0;i
只需使用此代码即可

    TabWidget widget = mTabHost.getTabWidget();
    for (int i = 0; i < widget.getChildCount(); i++) {

        //adjust height
        widget.getChildAt(i).getLayoutParams().height =40;

       //adjust textview
        TextView tv = (TextView) widget.getChildAt(i).findViewById(android.R.id.title);
        if (tv == null) {
            continue;
        }           
        tv.setAllCaps(false);
        tv.setTextSize(15);

        //set padding
        tv.setPadding(10,5, 10, 5);

    }
TabWidget widget=mTabHost.getTabWidget();
对于(int i=0;i
谢谢,该网站似乎有一些其他方面的好例子,我也会去看看。他们的选项卡示例看起来不错,但是,我查看了源代码中的每个文件,没有看到关于设置选项卡标签的填充、甚至文本大小之类的内容。也许我只是在什么地方错过了。我的标签工作正常,我只想为标签设置一些基本内容。也许我可以让setIndicator()接受除charSequence之外的其他内容,比如tab_lable.xml或其他什么?我终于让它工作了。我的代码有点不同,我首先犯了很多错误,但我可能学到了一些东西。你的回答确实帮助我明白该怎么做。谢谢,谢谢你这么快就回答了。唯一一件事我还没有发现如何做的是,在我改变为将视图传递给setIndicator之前,将底部的条带恢复到那里。有什么建议吗?@venkatesh:你能再发一次那个链接吗,它看起来真的很有用。我想回到那里,但现在链接不见了。我知道我应该把它记在书签上。谢谢你的帮助。