一部のアクティビティのタイトルバーを非表示にしたいと考えています。問題は、すべてのアクティビティにスタイルを適用したため、テーマを単純に設定できないこと@android:style/Theme.NoTitleBar
です。
スタイルの親としてNoTitleBarテーマを使用すると、すべてのアクティビティからタイトル バーが削除されます。
ノータイトルスタイルのアイテムをどこかに設定できますか?
一部のアクティビティのタイトルバーを非表示にしたいと考えています。問題は、すべてのアクティビティにスタイルを適用したため、テーマを単純に設定できないこと@android:style/Theme.NoTitleBar
です。
スタイルの親としてNoTitleBarテーマを使用すると、すべてのアクティビティからタイトル バーが削除されます。
ノータイトルスタイルのアイテムをどこかに設定できますか?
メソッドでこれを行いますonCreate()
。
//Remove title bar
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
//Remove notification bar
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
//set content view AFTER ABOVE sequence (to avoid crash)
this.setContentView(R.layout.your_layout_name_here);
this
を指しActivity
ます。
あなたはあなたのAndroidManifest.xml
:を変更することができます
<activity android:name=".MainActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">
またはandroid:theme="@android:style/Theme.Black.NoTitleBar"
、フルスクリーンアクティビティが必要ない場合に使用します。
注:以前に「デフォルト」ビューを使用したことがある場合は、親クラスもからAppCompatActivity
に変更する必要がありますActivity
。
私は今、次のことをしました。
一般的なスタイルからすべてを継承したスタイルを宣言し、titleBar を無効にしました。
<style name="generalnotitle" parent="general">
<item name="android:windowNoTitle">true</item>
</style>
これで、タイトル バーを非表示にするすべてのアクティビティにこのスタイルを設定して、アプリケーション全体のスタイルを上書きし、他のすべてのスタイル情報を継承できるようになりました。そのため、スタイル コードに重複はありません。
スタイルを特定のアクティビティに適用するには、タグを開いAndroidManifest.xml
て次の属性を追加します。activity
<activity
android:theme="@style/generalnotitle">
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
タイトル バーが一時的に表示されてから消えるので、私は好きではありません。
android:theme="@android:style/Theme.NoTitleBar"
また、新しいデバイスのユーザーが慣れている 3.0 以降の Holo の変更をすべて失ってしまったので、これも好きではありません。だから私はこの解決策に出くわしました。
res/valuesフォルダーで、styles.xmlというファイルを作成します(まだ存在しない場合)。そのファイルに次のコードを配置します。
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="Theme.Default" parent="@android:style/Theme"></style>
<style name="Theme.NoTitle" parent="@android:style/Theme.NoTitleBar"></style>
<style name="Theme.FullScreen" parent="@android:style/Theme.NoTitleBar.Fullscreen"></style>
</resources>
次に、別のstyles.xmlファイルを使用してres/values-v11を作成します (これも既に存在している可能性があります)。そのファイルに次のコードを配置します。
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="Theme.Default" parent="@android:style/Theme.Holo"></style>
<style name="Theme.NoTitle" parent="@android:style/Theme.Holo.NoActionBar"></style>
<style name="Theme.FullScreen" parent="@android:style/Theme.Holo.NoActionBar.Fullscreen"></style>
</resources>
また、4.0 以降をターゲットにしている場合は、さらに別のstyles.xmlファイルを含むres/values-v14フォルダーを作成します (はい、既に存在する可能性があります)。そのファイルに次のコードを配置します。
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="Theme.Default" parent="@android:style/Theme.Holo.Light"></style>
<style name="Theme.NoTitle" parent="@android:style/Theme.Holo.Light.NoActionBar"></style>
<style name="Theme.FullScreen" parent="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen"></style>
</resources>
最後に、これらすべてのファイルを作成したら、コードを追加できるAndroidManifiest.xmlファイルを開きます。
android:theme="@style/Theme.NoTitle"
タイトルを付けたくないアクティビティのアクティビティ タグ、またはアプリケーション全体に適用する場合はアプリケーション タグに追加します。
これで、ユーザーはデバイスのバージョンに関連付けられたテーマを、希望する画面レイアウトで取得できます。
PS値をに変更しandroid:theme="@style/Theme.FullScreen"
ても同じ効果がありますが、通知バーも削除されます。
開発者の Android ページに記載されているように、タイトル バーは 2 つの方法で削除できます。
manifest.xml
ファイル内:
application
アプリ内のすべてのアクティビティから削除する場合は、次を追加します。
<application android:theme="@android:style/Theme.Black.NoTitleBar">
または特定のアクティビティの場合:
<activity android:theme="@android:style/Theme.Black.NoTitleBar">
正解はおそらく、Activity だけを拡張するのではなく、ActionbarActivity を拡張しないことです。
まだアクションバーアクティビティを使用している場合、これは機能しているようです:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().hide(); //<< this
setContentView(R.layout.activity_main);
}
これもうまくいくようです:
styles.xml:
<style name="AppBaseTheme" parent="Theme.AppCompat.Light" >
<item name="android:windowNoTitle">true</item> <!-- //this -->
</style>
スコット・ビッグスが書いたようにできます。このような作品。ただし、テーマはありません。つまり、設定メニューの背景は透明です。
ただ変える
public class MainActivity extends ActionBarActivity {
Activity または FragmentActivity へ
public class MainActivity extends Activity {
ただし、マテリアル デザインを使用して見栄えを良くし、アクションバーを削除することはできません 。
これは、マテリアル デザインと互換性のあるアクションバーのスタイリングの例です。
を使用すると、this.requestWindowFeature(Window.FEATURE_NO_TITLE)
ユーザーは、アクティビティが開始されたときの起動アニメーション中に、タイトル バーを一瞬だけ見ることができますonCreate
。@android:style/Theme.Black.NoTitleBar
以下のように使用すると、起動アニメーション中にタイトル バーが表示されなくなります。
<activity
android:name=".MainActivity"
android:label="My App"
android:theme="@android:style/Theme.Black.NoTitleBar"
android:screenOrientation="portrait">
上記の例は明らかに既存のアプリケーションテーマを上書きします。既存のテーマがある場合はそれに追加<item name="android:windowNoTitle">true</item>
します。
これらの高評価の回答をすべて使用しようとすると、アプリが常にクラッシュしました。(「@android:style」と関係があると思いますか?)
私にとって最良の解決策は、次を使用することでした。
android:theme="@style/Theme.AppCompat.NoActionBar"
ヘッダー/タイトル バーはもうありません。アプリ全体または特定のアクティビティだけで必要な場合は、<application>...</application>
またはに配置するだけです。<activity>...</activity>
以下のようにテーマを作成します。
<!-- Variation on the Light theme that turns off the title -->
<style name="MyTheme" parent="android:style/Theme.Black">
<item name="android:windowNoTitle">true</item>
</style>
AppTheme
から定義を置き換える場合は、Style.xml のスタイルを変更するだけで済みます。DarkActionBar
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
にNoActionBar
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
AndroidManifast.xml で定義された AppTheme
onCreate
メソッドで、次のスニペットを使用します。
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
このコードをJavaファイルで使用できます
ビューを設定またはロードする前に、この行を追加します
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
このスタイルを style.xml ファイルに追加します
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
</style>
その後、以下のように、タイトルバーを表示したくない特定のアクティビティで、このスタイル名を androidManifest.xml に参照します。
<activity android:name=".youractivityname"
android:theme="@style/AppTheme.NoActionBar">
</activity>
サポート ウィジェット ツールバー v7 を使用しています。したがって、タイトルを削除または非表示にするには、これを記述する必要があります。
Toolbar myToolbar = (Toolbar) findViewById(R.id.my_toolbar);
setSupportActionBar(myToolbar);
//Remove¡ing title bar
getSupportActionBar().setDisplayShowTitleEnabled(false);
または、任意の時点でタイトル バーを非表示/表示する場合:
private void toggleFullscreen(boolean fullscreen)
{
WindowManager.LayoutParams attrs = getWindow().getAttributes();
if (fullscreen)
{
attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
}
else
{
attrs.flags &= ~WindowManager.LayoutParams.FLAG_FULLSCREEN;
}
getWindow().setAttributes(attrs);
}
私の場合、Android Studio 2.1 を使用していて、コンパイル SDK のバージョンが 6.0 の場合は、manifest.xml ファイルに移動して、次のコードを変更します。
コードは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.lesterxu.testapp2">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/Theme.AppCompat.NoActionBar">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
最初の答えは角閃石です。ここに私の説明があります:追加:
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
oncreate() メソッドで。
前:
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_start);
(setContentView の直前ではありません) これを行わないと、forceclose が発生します。+1 この回答。
このエラーが発生する理由は 2 つあります。
1。Window フラグは内部で既に設定されているsuper.onCreate(savedInstanceState);
ため、次の順序でコマンドを使用することをお勧めします。
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
二。TitleBar 内に [戻る/上へ] ボタンがあります。これは、現在のアクティビティが別のアクティビティの階層的な子であることを意味します。この場合、このコード行をコメント アウトするか、onCreate
メソッド内から削除することをお勧めします。
getActionBar().setDisplayHomeAsUpEnabled(true);
ユーザーYaWとDoug Paulの言うことを実行する場合は、setContentView を呼び出す前にウィンドウ機能を設定する必要があることに注意する必要があります。そうでない場合は、例外が発生します。
これは、完全なコードがどのように見えるかです。android.view.Window のインポートに注意してください。
package com.hoshan.tarik.test;
import android.app.Activity;
import android.os.Bundle;
import android.view.Window;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
}
}
アプリのテーマの親タグを「Theme.AppCompat.Light.NoActionBar」に変更するだけです
ええと、タイトルなしなど、 XMLの個々のアクティビティにテーマを適用できます。つまり、アプリケーションタグから取り出し、タグ宣言を開いて、目的のアクティビティタグに配置します。
この投稿で言及されていますが、誰も明示的に対処していないため、おそらくこれで時間を節約できます. あなたが私のようで、ActionBarActivity を拡張する 1 つのルート クラスを拡張する複数のクラスがある場合、そのアクティビティを NoTitleBar/NoActionBar に設定しようとするとエラーが発生することはすぐにはわかりません。具体的には次のとおりです。
「このアクティビティで Theme.AppCompat テーマ (または子孫) を使用する必要があります」
拡張をアクティビティに変更することで、これを修正できます。
@YaW のソリューションを使用して、アクティビティからタイトルと通知を削除しました。ただし、ダイアログを表示すると、タイトルと通知が表示されます。したがって、これをダイアログに適用するには、以下に示すようにダイアログをサブクラス化します。
public class MyDialog extends android.app.Dialog{
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
setContentView(R.layout.mydialog);
}
}
私の場合、私のアクティビティは AppCompatActivity を拡張していました。
class MyActivity: AppCompatActivity(){
...
}
したがって、他の答えはうまくいきませんでした。私はこれをしなければなりませんでした:
class MyActivity: AppCompatActivity(){
this.supportRequestWindowFeature(Window.FEATURE_NO_TITLE)
}
そしてそれはうまくいきます!
アクティビティが AppCompatActivity を拡張する場合は、requestWindowFeature(...) の前に「support」を追加するだけです。
Android Studio ドキュメントの WindowManager.LayoutParams には、FLAG_FULLSCREEN が「ウィンドウ フラグ: このウィンドウが表示されている間、すべての画面装飾 (ステータス バーなど) を非表示にする」と記載されています。したがって、このフラグはコンテンツを画面全体に表示しません。