无法让 ActionBar 显示具有正确样式的图标。
我的客户想要一个具有不同透明度的特定图标的 ActionBar。如果我只是将图标放入 res/menu 中的 XML 文件中,那么我无法让图标彼此相邻,并且每个图标的背景会导致垂直间隙,如下所示:
res/menu/global_nav.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:id="@+id/menu"
android:icon="@drawable/ic_main_menu"
android:showAsAction="always"
android:title="@string/nav_menu_main"/>
<item
android:id="@+id/login"
android:icon="@drawable/ic_people"
android:showAsAction="always"
android:title="@string/nav_menu_login"/>
<item
android:id="@+id/location"
android:icon="@drawable/ic_location"
android:showAsAction="always"
android:title="@string/nav_menu_location"/>
等等等等
因此,我创建了一个 customView 并简单地将相同的图标放置在一个 RelativeLayout 中。这使图标排列得更好,并且不会在图标之间留下空隙。我可以更轻松地设计它,即使我失去了使用上述菜单的能力。但是,它会在 PagerTitleStrip 上方的图标行底部留下一个空隙。人们离开搜索图标的 UX 图像在图标周围完全透明,但所有其他图像都有一些浅色,这使得图标下方的额外填充非常明显。如果没有它们周围的轻微透明度,人们可能永远不会注意到,但我的客户希望那个填充物消失。
res/layout/global_nav_custom.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/att_blue"
android:paddingBottom="-54dp"
android:orientation="horizontal" >
<ImageView
android:id="@+id/menu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:src="@drawable/ic_main_menu" />
<ImageView
android:id="@+id/search"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="false"
android:layout_alignParentRight="true"
android:src="@drawable/ic_search" />
<ImageView
android:id="@+id/message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/search"
android:src="@drawable/ic_message" />
<ImageView
android:id="@+id/cart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/message"
android:src="@drawable/ic_cart" />
<ImageView
android:id="@+id/location"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/cart"
android:src="@drawable/ic_location" />
<ImageView
android:id="@+id/login"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toLeftOf="@id/location"
android:src="@drawable/ic_people" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/menu"
android:layout_marginLeft="364dp"
android:layout_toRightOf="@+id/menu"
android:text="@string/app_name"
android:textAppearance="?android:attr/textAppearanceLarge"
android:textColor="@android:color/white" />
</RelativeLayout>
Java 代码
ActionBar bar = getActionBar();
bar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
LayoutInflater li = LayoutInflater.from(this);
View customView = li.inflate(R.layout.global_nav_custom, null);
bar.setCustomView(customView);
所以,我的问题是 A) 我如何设置 ActionBar 的样式以使用标准样式 XML 作为菜单但消除垂直间隙。或者 B) 使用 customView 解决方案,我在底部得到 4+ 像素的间隙。
顺便说一句,ActionBarSherlock 不是一个选项,因为公司不希望第三方库