web-dev-qa-db-ja.com

アクションバーの使用中にタイトルバーを非表示にするにはどうすればよいですか?

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);
19
Arci

これで解決策を見つけました。 AndroidManifest.xmlでテーマを宣言すると、タイトルバーは自動的に消えます。ただし、コードではなくAndroidManifest.xmlで宣言された場合にのみ機能する理由はわかりません。

NullPointerExceptionの理由は、ActionBarが上位バージョン(ICS以降)のTitleBarと同義であるためです。互換性ライブラリとActionBarSherlockを使用することにより、TitleBarを非表示にすると、ActionBarも非表示になります。

以下は、Sherlockのテーマを使用するようにアプリケーションを設定する方法です:(アプリケーションのタグに追加する必要があります)

Android:theme="@style/Theme.Sherlock"

コードのタイトルバーを非表示にする方法を知っている場合は、私の回答を自由に変更して、回答を含めてください。そして、もし誰かがそれがマニフェストファイルでのみ機能し、コードでは機能しない理由を説明できれば、それは素晴らしいことです。 :)

4
Arci

次のコード行を追加して、タイトルバーを非表示にします。

getSupportActionBar().setDisplayShowTitleEnabled(false);
getSupportActionBar().setDisplayShowHomeEnabled(false);

お役に立てれば :)

33
Razel Soco

すべてのタイトルバーを非表示にし、アクションバーのみを保持するには、次のコードを使用します。

final ActionBar actionBar = getActionBar();
actionBar.setDisplayShowHomeEnabled(false);
actionBar.setDisplayShowTitleEnabled(false);
actionBar.setDisplayUseLogoEnabled(false);

それは私のために働いた

18
Khaledvic

私はこれに対する答えを探していました。 1つの解決策が見つかりました。

actionBar = getActionBar();
actionBar.hide();

上記のスニペットは、タブのタイトルとスライダーを削除します。それが役に立てば幸い。

8
Bhasker

actionBarSherlockからtitleBarを文法的に表示/非表示にするには、この回答を参照してください。

Android:タイトルバーの非表示

1

私も同じ問題を抱えていました。これらの答えはどれも私にはうまくいきませんでした、私はまだアクションバーがロードされる直前に表示されているタイトルバーを垣間見ました。

マニフェストで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);
}

これでもカスタムテーマが読み込まれ、アクティビティが読み込まれたときにタイトルバーが表示されなくなりました

0
Eduko

Arciの答えは完全に正しいわけではありません。 テーマのドキュメント を読むと、次のことがわかります。

テーマは、アプリケーション全体またはアクティビティごとにマニフェストで定義する必要があります。各アクティビティのコードでテーマを定義することもできますbeforesuper.onCreate(Bundle)を呼び出します。これは、「Sherlock」アクティビティ基本クラスの1つから拡張し、アクションバーを使用する予定のすべてのアクティビティに対して実行する必要があります。

つまり、元のコードの最初の2行を入れ替えるだけで十分です。

setTheme(R.style.Theme_Sherlock);
super.onCreate(savedInstanceState);
...
0
Bartek

Xamarinを使用している場合。以下でご利用いただけます。

ActionBar.Hide();
0
Ruwan Jayalath