0

ActionBar互換性バージョンのコードに従いました

APIレベル10以下のコードを使用するとActionBarが表示されますが、APIレベル11以上のコードを使用するとロゴアイコンとアクションアイテムが表示されません。

私はクラスをチェックし、理解しました:

ActionBarHelperBase:APIレベル10以下。

ActionBarHelperHoneycomb:APIレベル11以上。

ActionBarHelperICS:APIレベル14以上。

Androidバージョン3.0以降のActionBarを修正する最良の方法は何ですか?特にAndroid4.0

4

4 に答える 4

2

問題はマニフェストファイルにありました。android:theme="@style/Theme.ThemeCompabilityVersion マニフェストファイルから削除する必要があります。

次に、次のようなOnCreate()メソッドのコードでバージョンを確認する必要があります。

private void setTheme() {
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) 
        setTheme(R.style.ThemeCompabilityVersion);
    else 
        setTheme(R.style.AppTheme);         
}
于 2012-06-08T00:36:19.993 に答える
1

APIover2.XのすべてのActionBar機能を使用できるようにするActionBarSherlockと呼ばれる素晴らしいプロジェクトがあります。

依存関係を理解し​​て設定するためのサンプルプロジェクトが必要であり、多くの問題を解決します:) getSupportActionBar()を呼び出すだけで、すべてのメソッドが使用可能になります。

私が犯したいくつかの一般的なエラーは、テーマを正しく設定しないことでした。

<style name="Theme.Styled" parent="Theme.Sherlock.Light.DarkActionBar">
<item name="actionBarStyle">@style/Widget.Styled.ActionBar</item>
<item name="android:actionBarStyle">@style/Widget.Styled.ActionBar</item>
</style>

<style name="Widget.Styled.ActionBar" parent="Widget.Sherlock.Light.ActionBar.Solid.Inverse">
<item name="background">@drawable/bg_striped</item>
<item name="android:background">@drawable/bg_striped</item>

<item name="backgroundSplit">@drawable/bg_striped_split</item>
<item name="android:backgroundSplit">@drawable/bg_striped_split</item>

次に、そのテーマを、ActionBarをサポートする各アクティビティまたはアプリケーションタグに適用する必要があります。

<application android:icon="@drawable/icon" 
             android:label="@string/app_name" 
             android:name=".ApplicationClass"
             android:theme="@style/Theme.Styled">

また、バーの項目を含むmenu.xmlを設定することもできます。

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/menu_save"
      android:icon="@drawable/ic_launcher"
      android:title="TestMe"
      android:menuCategory="system"
      android:showAsAction="never" />
<item android:id="@+id/menu_launch"
      android:icon="@drawable/ic_launcher"
      android:title="Test2"
      android:menuCategory="secondary"
      android:showAsAction="never" />
<item android:id="@+id/menu_go"
      android:icon="@drawable/ic_launcher"
      android:title="Test"
      android:showAsAction="always|withText" />
</menu>

私が学んだ最も興味深いことは、各アクティビティまたはフラグメントがそれらのアクションをバーに配置できることです。したがって、フラグメントが検索可能である場合は、虫眼鏡アイコン付きのオプションを設定できます。

以前のバージョンではフラグメントにいくつかの問題がありました。現在のバージョンでは解決されているようです。必要に応じて、 RoboGuiceとフラグメントサポートを使用してセットアップするためのサンプルコードを配置できます。

よろしくお願いします。

于 2012-06-06T17:06:22.757 に答える
0

ActionbarSherlockを強くお勧めします。これは、はるかに完全で高度な互換性バージョンです。もちろん、Androidバージョンで実行している場合はネイティブアクションバーを使用します。

actionbarsherlock.com

于 2012-06-06T17:05:08.633 に答える
0

に設定targetSdkVersionしました11か?あなたはより低く保つことができますminSdkVersion、例えば:

<uses-sdk
    android:minSdkVersion="7"
    android:targetSdkVersion="15" />
于 2012-06-06T19:00:24.663 に答える