如何在Android的ActionBar文本上方添加图标

5

我是新手Android开发人员。我正在尝试实现一个有三个选项卡的ActionBar,每个选项卡都包含一个图标和选项卡名称。我已经成功地在每个选项卡上放置了图标和文本,但遗憾的是,图标出现在选项卡文本(选项卡名称)的左侧。我希望将图标放置在文本的顶部而不是左侧。请查看我的代码片段,并帮助我找到解决方案。提前致谢。

        private void setActionBar()

         {               

           ActionBar bar = getActionBar();

    bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
    bar.setDisplayShowHomeEnabled(false);
    bar.setDisplayShowTitleEnabled(false);

    ActionBar.Tab tabA = bar.newTab().setText("TabA");
        tabA.setIcon(R.drawable.iconA);

            ActionBar.Tab tabB = bar.newTab().setText("TabB");
    tabB.setIcon(R.drawable.iconB);

    ActionBar.Tab tabC = bar.newTab().setText("TabC");
            tabC.setIcon(R.drawable.iconC);
        }
1个回答

5
您可以使用自定义视图来定义您想要如何显示选项卡。
  1. 定义自定义布局,其中图像位于文本上方
  2. 在活动中,填充视图并设置图像和文本的值
  3. 为选项卡设置自定义视图

以下是一个简单的示例:

自定义布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical" >

<ImageView
    android:id="@+id/tabIcon"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:paddingTop="2dp" />

<TextView
    android:id="@+id/tabText"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:textColor="#FFFFFF" />

</LinearLayout>

解压视图

View tabView = activity.getLayoutInflater().inflate(R.layout.actiobar_tab, null);
TextView tabText = (TextView) tabView.findViewById(R.id.tabText);
tabText.setText(R.String.sometext);

ImageView tabImage = (ImageView) tabView.findViewById(R.id.tabIcon);
tabImage.setImageDrawable(activity.getResources().getDrawable(R.drawable.someimage));

为给定的选项卡设置自定义视图

Tab tab = actionBar.newTab().setCustomView(tabView)

1
我无法在SectionsPagerAdapter中填充视图,但事实证明你不需要填充它。只需使用Tab tab = actionBar.newTab().setCustomView(R.layout.yourView)即可。 - Noumenon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接