ActionBarSherlockを使用していて、アプリケーションのタイトルバーを非表示にしようとしていますが、そうするたびに、NullPointerException
にアクセスするとActionBar
が表示されます。タイトルを削除/非表示にするにはどうすればよいですか。バー?アクションバーのタイトルについては言及していないことに注意してください。アクションバーの上にあるタイトルバーを参照しています。 Android 2.3デバイスでアプリケーションを実行しています。
以下は私のコードです:(私のクラスはSherlockFragmentActivity
を拡張します。)
super.onCreate(savedInstanceState);
setTheme(R.style.Theme_Sherlock);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
ActionBar actionbar = getSupportActionBar();
actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); //I get the NullPointerException here.
//...
setContentView(R.layout.tab_navigation);
これで解決策を見つけました。 AndroidManifest.xml
でテーマを宣言すると、タイトルバーは自動的に消えます。ただし、コードではなくAndroidManifest.xml
で宣言された場合にのみ機能する理由はわかりません。
NullPointerExceptionの理由は、ActionBar
が上位バージョン(ICS以降)のTitleBar
と同義であるためです。互換性ライブラリとActionBarSherlock
を使用することにより、TitleBar
を非表示にすると、ActionBar
も非表示になります。
以下は、Sherlockのテーマを使用するようにアプリケーションを設定する方法です:(アプリケーションのタグに追加する必要があります)
Android:theme="@style/Theme.Sherlock"
コードのタイトルバーを非表示にする方法を知っている場合は、私の回答を自由に変更して、回答を含めてください。そして、もし誰かがそれがマニフェストファイルでのみ機能し、コードでは機能しない理由を説明できれば、それは素晴らしいことです。 :)
次のコード行を追加して、タイトルバーを非表示にします。
getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().setDisplayShowHomeEnabled(false);
お役に立てれば :)
すべてのタイトルバーを非表示にし、アクションバーのみを保持するには、次のコードを使用します。
final ActionBar actionBar = getActionBar();
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayUseLogoEnabled(false);
それは私のために働いた
私はこれに対する答えを探していました。 1つの解決策が見つかりました。
actionBar = getActionBar();
actionBar.hide();
上記のスニペットは、タブのタイトルとスライダーを削除します。それが役に立てば幸い。
actionBarSherlockからtitleBarを文法的に表示/非表示にするには、この回答を参照してください。
私も同じ問題を抱えていました。これらの答えはどれも私にはうまくいきませんでした、私はまだアクションバーがロードされる直前に表示されているタイトルバーを垣間見ました。
マニフェストでActivityテーマをNoActionBarに設定する必要がありました。
Android:theme="@style/Theme.Sherlock.NoActionBar"
次に、setContentView()の直前にテーマをアクティビティ内に戻します。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.Theme_Custom);
setContentView(R.layout.activity_home);
}
これでもカスタムテーマが読み込まれ、アクティビティが読み込まれたときにタイトルバーが表示されなくなりました
Arciの答えは完全に正しいわけではありません。 テーマのドキュメント を読むと、次のことがわかります。
テーマは、アプリケーション全体またはアクティビティごとにマニフェストで定義する必要があります。各アクティビティのコードでテーマを定義することもできますbefore
super.onCreate(Bundle)
を呼び出します。これは、「Sherlock」アクティビティ基本クラスの1つから拡張し、アクションバーを使用する予定のすべてのアクティビティに対して実行する必要があります。
つまり、元のコードの最初の2行を入れ替えるだけで十分です。
setTheme(R.style.Theme_Sherlock);
super.onCreate(savedInstanceState);
...
Xamarinを使用している場合。以下でご利用いただけます。
ActionBar.Hide();