0

これを死ぬまで研究しましたが、答えが見つかりません。

AppCompat を使用した ActionBar があります。API v7 までサポートしています (API v8 で十分です)。ActionBar は API v11 から完全に動作します。API < v11 には、オーバーフローを提供せずに ActionBar からアイコン (および機能) を削除するという問題があります。全体像は、アプリのロゴ、アプリのタイトル、および 3 つのアイコンがすべてローエンドの電話の同じ ActionBar に押し込まれていることです。部屋を作ろうとしている!

2つのソリューションのうちの1つに満足しています。また:

  1. プルダウンから機能を取得できるようにオーバーフローを取得する方法。
  2. (推奨) ActionBar からアイコンとテキストを削除する方法

以下は、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>
4

2 に答える 2

4

解決しました!

API < v11 を使用する場合は、Style の属性の「android:」要素を削除する必要があります。例えば:

<style name="LiteActionBarStyle" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
        <item name="displayOptions"></item>
    </style>

これは、API >= 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 < v11 を搭載したデバイスにこれを適用すると、いくつかのアイコンが欠落していました。アイコンを常に表示するように変更する必要がありました。

<item
        android:id="@+id/actionInvertShake"
        MyApp:showAsAction="always"
        android:contentDescription="@string/shakeChangeContentDescription"
        android:icon="@drawable/shake"
        android:title="@string/shakeOption"/>

名前空間は「android」ではなく「MyApp」であることに注意してください

これにより、App のタイトルとアイコンが ActionBar から削除され、すべてのアイコンが右から左に表示されます。

于 2013-09-04T11:55:33.717 に答える
0

設定<item name="android:icon">@android:color/transparent</item> すると、 のスペースを取りませんActionBar

于 2013-09-04T01:34:28.283 に答える