【问题标题】:How to add padding to a tabs label?如何为标签标签添加填充?
【发布时间】:2014-09-15 19:01:18
【问题描述】:

我刚开始为 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>

我已经搜索并试图弄清楚这几个小时了。我可以在大约两分钟内将图标变小,但我喜欢它们的大小。

谁能建议对标签标签进行简单格式化的最佳方法?

【问题讨论】:

    标签: android


    【解决方案1】:
    tabHost.addTab(tabHost.newTabSpec("tab1").setContent(
                new Intent(this, DealCities.class)).setIndicator(prepareTabView("Deals",R.drawable.deal)));
    

    其中 prepareTabView 是一个方法。在这些方法中,膨胀一个视图并添加 Image 和 Text,如下所示:

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

    其中 tabs 是膨胀的视图,它的 xml 如下:

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

    现在你可以随心所欲地制作你的填充物了..

    【讨论】:

    • 谢谢,那个网站看起来有一些很好的例子,我也会去看看。他们的选项卡示例看起来不错,但是,我查看了源中的每个文件,并没有看到有关设置填充甚至文本大小或选项卡标签的内容。也许我只是在某个地方错过了它。我的标签工作正常,我只想为标签设置一些基本的东西。也许我可以让 setIndicator() 使用 charSequence 以外的东西,比如 tab_lable.xml 什么的?
    • 好吧,我终于让它工作了。我的代码结果有点不同,我首先犯了很多错误,但我可能学到了一些东西。你的回答肯定帮助我理解了该怎么做。谢谢,谢谢你这么快回答。我唯一不知道该怎么做的就是在我更改为将视图传递给 setIndicator 之前将底部条带回来。有什么建议吗?
    • @venkatesh:能否请您再次发布该链接,它看起来非常有用。我想回到那里,但现在链接不见了。我知道我应该给它加书签。感谢您的帮助。
    【解决方案2】:

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

     for (int i = 0; i < tabHost.getTabWidget().getChildCount(); i++) {
         tabHost.getTabWidget().getChildAt(i).setPadding(10,10,10,10); 
     }
    

    【讨论】:

      【解决方案3】:

      只需使用此代码

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-21
        • 1970-01-01
        • 2014-07-14
        • 2017-04-24
        • 1970-01-01
        • 1970-01-01
        • 2013-06-14
        • 2013-09-16
        相关资源
        最近更新 更多