为什么Tab主机不在android中显示图标?

use*_*104 4 tabs android android-layout android-tabhost fragment-tab-host

这是设置tabhost的代码,但是有两个问题

  1. 如果文本太长,文本将转到下一行,我可以减小大小并将其强制为单行吗?
  2. 所有图标都不显示,即使我确定图像src是正确的

    public class MainActivity extends FragmentActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            FragmentTabHost tabHost = (FragmentTabHost)findViewById(android.R.id.tabhost);
    
            tabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
            tabHost.addTab(tabHost.newTabSpec("restaurant").setIndicator("Restaurant",getResources().getDrawable(R.drawable.food)),PlaceList.class, null);
            tabHost.addTab(tabHost.newTabSpec("attraction").setIndicator("Attraction",getResources().getDrawable(R.drawable.view)), PlaceList.class, null);
            tabHost.addTab(tabHost.newTabSpec("map").setIndicator("Map",getResources().getDrawable(R.drawable.map)),Map.class,null);
            tabHost.addTab(tabHost.newTabSpec("planner").setIndicator("Planner",getResources().getDrawable(R.drawable.plan)),Planner.class, null);
        }
     }
    
    Run Code Online (Sandbox Code Playgroud)

adn*_*eal 5

在呼叫时TabSpec.setIndicator,只有在标签为空时才会显示Drawable您传入的内容.至于确保限制为单行,你可以循环,然后调用并获得用于设置标题.之后就打电话给.nullTextViewTabWidget.getTabCountTabWidget.getChildTabViewAtView.findViewByIdTextViewTextView.setSingleLine

    final TabWidget tabWidget = tabHost.getTabWidget();
    for (int i = 0; i < tabWidget.getTabCount(); i++) {
        final View tab = tabWidget.getChildTabViewAt(i);
        final TextView title = (TextView) tab.findViewById(android.R.id.title);
        title.setSingleLine();
    }
Run Code Online (Sandbox Code Playgroud)

或者,您可以通过为其创建样式来扩展自己的选项卡布局Widget.TabWidget.

<style name="Your.TabWidget" parent="@android:style/Widget.TabWidget">
    <item name="android:tabLayout">@layout/your_tab_layout</item>
</style>
Run Code Online (Sandbox Code Playgroud)

在您的父主题中,创建一个新的itemfor android:tabWidgetStyle以应用它.