設定android:windowActionBar="false"
すると、ActionBarは本当に無効になりますが、その後、言うとおり、getActionBar();
nullを返します。これは以下によって解決されます:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
getActionBar().hide();
setContentView(R.layout.splash); // be sure you call this AFTER requestFeature
これにより、ActionBarが作成され、表示される前にすぐに非表示になります。
しかし、今は別の問題があります。入れた後windowActionBar="false"
テーマに、活動は通常のウィンドウタイトルの代わりに、アクションバーを描画します。
いくつかの*.NoTitleBar
ストックテーマを使用してこれを回避しようとしたり<item name="android:windowNoTitle">true</item>
、独自のテーマを入れようとしたりすると、うまくいきません。
その理由は、ActionBar はウィンドウタイトルに依存してそれ自体を表示するためです。つまり、ActionBar は変換されたウィンドウタイトルです。
したがって、私たちを助けることができるトリックは、Activityテーマxmlにもう1つ追加することです。
<item name="android:windowActionBar">false</item>
<item name="android:windowTitleSize">0dp</item>
これにより、ウィンドウタイトルが高さゼロになり、実質的に非表示になります。
あなたの場合、スプラッシュ画面の表示が終わったら、単に呼び出すことができます
setContentView(R.layout.main);
getActionBar().show();
これで完了です。アクティビティは、ActionBarのちらつきやウィンドウタイトルの表示なしで始まります。
ADDONは:
あなたが表示され、アクションバーを複数回非表示にした場合多分あなたは気づいている最初の上映がされていないアニメーション。それ以降、表示と非表示はアニメーション化されます。最初のショーでもアニメーションを使用したい場合は、これを使用できます。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_ACTION_BAR);
// delaying the hiding of the ActionBar
Handler h = new Handler();
h.post(new Runnable() {
@Override
public void run() {
getActionBar().hide();
}
});
同じことは、次の方法でも実現できます。
protected void onPostResume() {
super.onPostResume();
getActionBar().hide();
ただし、これがアクティビティの最初の表示であるかどうかを確認するには、追加のロジックが必要になる場合があります。
アイデアは、ActionBarの非表示を少し遅らせることです。ある方法では、ActionBarを表示させ、すぐに非表示にします。したがって、最初の非アニメーションショーを超えて、次のショーは2番目と見なされ、アニメーション化されます。
ご想像のとおり、遅延操作によって非表示になる前にActionBar が表示される可能性があります。これは実際にそうです。ほとんどの場合、何も表示されませんが、時々、ActionBarが一瞬ちらつくのが見られます。
いずれにせよ、これはかなりの解決策ではないので、私はどんな提案も歓迎します。
v7サポートactionbarユーザーの追加、コードは次のようになります:
getWindow().requestFeature(Window.FEATURE_ACTION_BAR);
getSupportActionBar().hide();
Theme.AppCompat.Light
...使用この回答する方法 [1] [1]:stackoverflow.com/a/25365193/1364896