如何在安卓中移除Tabwidget的内边距或外边距?

8 浏览
0 Comments

如何在安卓中移除Tabwidget的内边距或外边距?

我想创建一个带标签的应用程序。

一切都没问题,但是当我创建标签时,标签之间的间距太大了。

我想要去掉这个内边距或外边距,但是我不知道该怎么做。

有什么建议吗?

XML




    
    
        
        
        
        
        
        
        
        
        
        
    
    
    
        
        
        
        
        
        
        
        
        
        
    
   

这是我的代码:

public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    TabHost tabHost = (TabHost) findViewById(android.R.id.tabhost);
    tabHost.setup();
    final TabWidget tabWidget = tabHost.getTabWidget();
    final FrameLayout tabContent = tabHost.getTabContentView();
    tabHost.getTabWidget().setDividerDrawable(R.drawable.empty);
    // 获取原始的标签文本视图并将其从视图组中移除。
    TextView[] originalTextViews = new TextView[tabWidget.getTabCount()];
    for (int index = 0; index < tabWidget.getTabCount(); index++) {
        originalTextViews[index] = (TextView) tabWidget.getChildTabViewAt(index);
    }
    tabWidget.removeAllViews();
    // 确保在启动时所有的标签内容都不可见。
    for (int index = 0; index < tabContent.getChildCount(); index++) {
        tabContent.getChildAt(index).setVisibility(View.GONE);
    }
    // 根据xml文件中的文本视图子项创建标签规范。
    // 或以其他方式创建简单的标签规范实例...
    for (int index = 0; index < originalTextViews.length; index++) {
        final TextView tabWidgetTextView = originalTextViews[index];
        final View tabContentView = tabContent.getChildAt(index);
        TabSpec tabSpec = tabHost.newTabSpec((String) tabWidgetTextView.getTag());
        tabSpec.setContent(new TabHost.TabContentFactory() {
            @Override
            public View createTabContent(String tag) {
                return tabContentView;
            }
        });
        if (tabWidgetTextView.getBackground() == null) {
            tabSpec.setIndicator(tabWidgetTextView.getText());
        } else {
            tabSpec.setIndicator(tabWidgetTextView.getText(), tabWidgetTextView.getBackground());
        }
        tabHost.addTab(tabSpec);
    }
    tabHost.getTabWidget().setDividerDrawable(R.drawable.empty);
    if (Integer.parseInt(Build.VERSION.SDK) >= Build.VERSION_CODES.HONEYCOMB) {
        tabHost.getTabWidget().setShowDividers(LinearLayout.SHOW_DIVIDER_NONE);
    }
//      tabHost.setCurrentTab(0);
    }
}

enter image description here

0
0 Comments

问题的原因是希望在Android中的Tabwidget中去除padding或margin。解决方法是将布局文件中每个"tab" TextView的属性"wrap_content"改为"match_parent"。每个"tab"应该像这样:


可以在这里了解两者之间的区别和解释。

另外,还可以增加文本的大小。TextView不会自动缩放以适应其父元素。

但是,我不想使用match_parent。我希望删除额外的空间以使选项卡更小。

0
0 Comments

问题的出现原因:Tabwidget在Android中有默认的padding和margin值,造成了界面上的空白边距。

解决方法:通过创建一个自定义的style,并将tabPaddingStart和tabPaddingEnd的值设为0dp来移除padding。

具体步骤如下:

1. 查看Tablayout的基本样式(Base.Widget.Design.TabLayout),可以看到以下两行代码:

12dp
12dp

2. 创建一个名为"tab_bar"的style,并设置相关属性:


3. 在Tablayout中使用刚创建的style:


通过以上步骤,就可以移除Tabwidget中的padding和margin。

0
0 Comments

问题原因:想要在Android中移除TabWidget中的padding或margin。

解决方法:除了使用tabPaddingStart和tabPaddingEnd属性外,还可以通过覆盖design_tab_scrollable_min_width这个dimen来实现。具体代码如下:

0dp

这样就可以将TabWidget中的padding或margin移除掉了。

0