4

私のアプリケーションでは、ActionBarSherlock ライブラリを使用しています。また、カスタム タイトル バーを使用しています。これが私のonCreateになります:

requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
setContentView(R.layout.main_tab);
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title);

そして私のstyles.mxlで

<style name="MyTheme" parent="Theme.Sherlock">
        <item name="android:background">#ff888888</item>
        <item name="android:windowNoTitle">false</item>
        <item name="android:windowTitleSize">50dp</item>
        <item name="android:windowTitleBackgroundStyle">@style/windowTitleBackgroundStyle</item>
    </style>
<style name="windowTitleBackgroundStyle">  
  <item name="android:background">#00688B</item>                
</style>

マニフェスト ファイルでは、アクティビティに MyTheme を使用しています。

android:theme="@style/MyTheme"

このコードは、Android の下位バージョン (GB2.3.5 でテスト済み) で正しく動作します。しかし、ICS でテストしたところ、「カスタム タイトルを他のタイトル機能と組み合わせることはできません」というエラーでクラッシュしました。試した解決策: 1) false 2) values-v11 フォルダーがありません

4

2 に答える 2

10

同じ例外が発生しました。

私が見つけたものは次 のとおりです。Androidの新しいバージョンでは、Holoテーマが選択されるたびに、フレームワークはWindow.FEATURE_ACTION_BAR機能を使用します。アプリがsetFeatureInt(Window.FEATURE_CUSTOM_TITLE)を呼び出し、FEATURE_ACTION_BARがすでに設定されている場合は常に、フレームワークは例外をスローします。

私の場合、values-v11フォルダーのstyles.xmlファイルは、android:Theme.Holoから継承するようにテーマを再定義していました。Android 3.0以降でアプリを実行しようとすると、HoloがデフォルトでActionBarを使用しているため、クラッシュしました。修正は簡単でした。Holoを使用するときは、ActionBarをオフにしてください。改訂された値は次のとおりです-v11\styles.xmlの変更:

<style name="AppBaseTheme" parent="android:Theme.Holo.NoActionBar">
    <!-- API 11 theme customizations can go here. -->
</style>
于 2013-03-17T22:09:54.977 に答える