已经研究过这个死亡,但是找不到答案。
我有一个使用AppCompat的ActionBar。我支持API v7(API v8会这样做)。 ActionBar完全适用于API v11。 API< v11存在从ActionBar中删除图标(以及某个功能)而不提供溢出的问题。大局是我有一个App徽标,一个应用程序标题和3个图标,所有这些都在低端手机的同一个ActionBar中碾压。试着腾出一些空间!
我对2种解决方案中的1种感到满意。之一:
以下是我目前用于API 11 +的XML:
<resources>
<!--
Base application theme for API 11+. This theme completely replaces
AppBaseTheme from res/values/styles.xml on API 11+ devices.
-->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/LiteActionBarStyle</item>
<item name="actionBarStyle">@style/LiteActionBarStyle</item>
</style>
<style name="LiteActionBarStyle" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:displayOptions"></item>
</style>
</resources>
具体做法是:
<item name="android:displayOptions"></item>
这是API v11之前不可用的属性。
这是我到目前为止的地方:
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<!--
Base application theme, dependent on API level. This theme is replaced
by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="actionBarStyle">@style/LiteActionBarStyle</item>
</style>
<style name="LiteActionBarStyle" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse"></style>
</resources>
v11之前的API有哪些替代方案?
修改
使用透明度建议更新了样式:
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<!--
Base application theme, dependent on API level. This theme is replaced
by AppBaseTheme from res/values-vXX/styles.xml on newer devices.
-->
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="actionBarStyle">@style/LiteActionBarStyle</item>
</style>
<style name="LiteActionBarStyle" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:icon">@android:color/transparent</item>
</style>
</resources>
答案 0 :(得分:4)
解决了!
使用API&lt; v11,你必须删除Style中属性的“android:”元素。例如:
<style name="LiteActionBarStyle" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="displayOptions"></item>
</style>
使用API&gt; = v11
的样式应该是这样的<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:actionBarStyle">@style/LiteActionBarStyle</item>
<item name="actionBarStyle">@style/LiteActionBarStyle</item>
</style>
<style name="LiteActionBarStyle" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:displayOptions"></item>
</style>
此外,当我在具有API&lt;的设备上应用此图标时,我错过了一些图标。 V11。我不得不将图标更改为始终显示:
<item
android:id="@+id/actionInvertShake"
MyApp:showAsAction="always"
android:contentDescription="@string/shakeChangeContentDescription"
android:icon="@drawable/shake"
android:title="@string/shakeOption"/>
请注意,命名空间是“MyApp”而不是“android”
这将从ActionBar中删除App的标题和图标,并显示从右到左的所有图标。
答案 1 :(得分:0)
设置<item name="android:icon">@android:color/transparent</item>
它不会占用ActionBar
。