如何在安卓中移除Tabwidget的内边距或外边距?
如何在安卓中移除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); } }
问题的原因是希望在Android中的Tabwidget中去除padding或margin。解决方法是将布局文件中每个"tab" TextView的属性"wrap_content"改为"match_parent"。每个"tab"应该像这样:
可以在这里了解两者之间的区别和解释。
另外,还可以增加文本的大小。TextView不会自动缩放以适应其父元素。
但是,我不想使用match_parent。我希望删除额外的空间以使选项卡更小。
问题的出现原因: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。