私は私の活動のいくつかのためにタイトルバーを隠したいです。問題は、すべてのアクティビティにスタイルを適用したことです。したがって、テーマを単に@Android:style/Theme.NoTitleBar
に設定することはできません。
NoTitleBar テーマを私のスタイルの親として使用すると、すべてのアクティビティからタイトルバーが削除されます。
タイトルなしスタイルの項目をどこかに設定できますか?
私は今、次のことをしました。
私は自分の一般的なスタイルからすべてを継承し、そしてtitleBarを無効にするスタイルを宣言しました。
<style name="generalnotitle" parent="general">
<item name="Android:windowNoTitle">true</item>
</style>
これで、タイトルバーを非表示にしてアプリケーション全体のスタイルを上書きし、他のすべてのスタイル情報を継承するすべてのアクティビティにこのスタイルを設定できるため、スタイルコードが重複することはありません。
特定のアクティビティにスタイルを適用するには、AndroidManifest.xml
を開き、activity
タグに次の属性を追加します。
<activity
Android:theme="@style/generalnotitle">
これを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"
を使用してください。
注: 以前に 'default'ビューを使用したことがある場合は、おそらく親クラスもAppCompatActivity
からActivity
に変更する必要があります。
タイトルバーが少しの間表示されてから消えるので、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>
次に、 res/values-v11 を別の styles.xml ファイルと一緒に作成します(これもすでに存在している可能性があります)。そのファイルに次のコードを配置します。
<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以上をターゲットにしているのであれば、 res/values-v14 フォルダーをもう一つの styles.xml ファイルと一緒に作成してください(はい、既にそこにあるかもしれません)。そのファイルに次のコードを配置します。
<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"
タイトルを付けたくないアクティビティのactivityタグ、またはアプリケーション全体に適用したい場合はapplicationタグに。
今すぐあなたのユーザーはあなたが望むスクリーンレイアウトで彼らのデバイスバージョンに関連したテーマを得るでしょう。
P.S値を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">
正しい答えは、おそらくActionbarActivityを拡張するのではなく、Activityだけを拡張することです。
それでもアクションバーアクティビティを使用しているのであれば、これはうまくいっているようです。
@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>
scott Biggsが書いたように私はすることができます。このような作品です。その時テーマがない以外は。設定メニューの背景は透明です。
ただ変わる
public class MainActivity extends ActionBarActivity {
アクティビティまたはFragmentActivityへ
public class MainActivity extends Activity {
しかし、私はそれが材料設計を使用してアクションバーを削除しないで十分によく見えるようにすることができます: https://Gist.github.com/shimondoodkin/86e56b3351b704a05e53
それは材料設計の互換性のあるアクションバーのスタイルによるものです。
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>
をそれに追加してください。
何が私のために働く:
1 - styles.xmlで:
<style name="generalnotitle" parent="Theme.AppCompat.Light" >
<item name="Android:windowNoTitle">true</item> <!-- //this -->
</style>
MainActivityの2 -
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getSupportActionBar().hide(); //<< this
setContentView(R.layout.activity_main);
}
マニフェストではスタイルを継承します。
<activity Android:name=".MainActivity" Android:theme="@style/generalnotitle">
私はすべてのそれらの高い支持率の高い回答を使用しようとしたときに私のアプリは常にクラッシュしました。 (私はそれが "@ 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>
追加する
<item name="Android:windowNoTitle">true</item>
appTheme(styles.xml)内
メインアクティビティのgetActionBar().hide();
メソッドでonCreate()
を使うだけです。
AppTheme
の定義を置き換える場合は、Style.xmlのDarkActionBar
スタイルを変更するだけです。
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
NoActionBar
へ
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
androidManifast.xmlに定義されているAppTheme
あなたのJavaファイルでこのコードを使うことができます
ビューを設定またはロードする前にこの行を追加してください
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
onCreate
メソッドで、次のコードを使用します。
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
あなたが使用するテーマのためにそれらの両方を追加してください:
<item name="windowActionBar">false</item>
<item name="Android:windowNoTitle">true</item>
AppCompat
には、次の解決策が私のために働きました:
styles.xml
にアクションバーのない新しいテーマスタイルを追加し、parent="Theme.AppCompat.NoActionBar"
を設定します。
<style name="SplashTheme" parent="Theme.AppCompat.NoActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimary</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="Android:windowBackground">@color/colorPrimary</item>
</style>
androidManifest.xml
のスプラッシュスクリーンアクティビティに同じテーマスタイルを実装しましょう
<activity
Android:name=".ActivityName"
Android:theme="@style/SplashTheme"> // apply splash them here
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
これが結果です。
このスタイルを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>
私はサポートウィジェットToolbar 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>
これは私の問題を解決しました
明らかに私の活動:
<application
Android:allowBackup="true"
Android:icon="@mipmap/ic_launcher"
Android:label="@string/app_name"
Android:supportsRtl="true"
Android:theme="@style/AppTheme">
<activity Android:name=".SplashScreen">
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
「AppTheme」という名前の下のスタイルでは:
<resources>
<!-- Base application theme. -->
<style name="AppTheme"
parent="Theme.AppCompat.Light.NoActionBar">
**<item name="windowActionBar">false</item>
<item name="Android:windowNoTitle">true</item>**
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
最初の答えは角閃石です。これが私の説明です:add:
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この答え。
タイトルバーとアクションバーの両方を隠すには、次のようにします。
Manifestのアクティビティタグ内:
Android:theme="@style/AppTheme.NoActionBar"
SetContentViewの前のActivity.Javaで、次のようにします。
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
すなわち
//タイトルバーを削除
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
//通知バーを削除
this.getWindow()。setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN、WindowManager.LayoutParams.FLAG_FULLSCREEN);
_ note _ :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);
}
}
AndroidManifest.xmlのアクティビティにtheme @ style/Theme.AppCompat.Light.NoActionBarを次のように追加します。
<activity
Android:name=".activities.MainActivity"
Android:theme="@style/Theme.AppCompat.Light.NoActionBar">
</activity>
このエラーが発生する理由は2つあります。
1。 ウィンドウフラグはすでに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
name__メソッド内からこのコード行をコメントアウトまたは削除します。
getActionBar().setDisplayHomeAsUpEnabled(true);
ユーザーが{YaW}とDoug Paulと言うようなことをする場合は、setContentViewを呼び出す前にウィンドウ機能を設定する必要があることに留意する必要があります。そうでない場合は、例外が発生します。
最も明白なファイルに追加する、
Android:theme="@Android:style/Theme.Translucent.NoTitleBar"
javaファイルに次の行を追加してください。
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
ええと、タイトルなしのように _ xml _ で個々のアクティビティにテーマを適用することができます。つまり、アプリケーションタグから取り出し、タグ宣言を開いて目的のアクティビティタグに配置します。
Appテーマの親タグを「Theme.AppCompat.Light.NoActionBar」に変更するだけです。
この記事にはそれについての言及がありますが、誰もそれを明示的に述べていないので、多分これは人々に時間を節約するでしょう。私のようで、ActionBarActivityを拡張する1つのルートクラスを拡張する複数のクラスがある場合、そのアクティビティをNoTitleBar/NoActionBarに設定しようとするとエラーが発生することはすぐにはわかりません。特に、
「このアクティビティでは、Theme.AppCompatテーマ(または子孫)を使用する必要があります」
これを修正してActivityへの拡張を変更できます。
Android StudioのドキュメントのWindowManager.LayoutParamsには、FLAG_FULLSCREENは「ウィンドウフラグ:このウィンドウが表示されている間はすべてのスクリーン装飾(ステータスバーなど)を隠す」と書かれています。そのため、このフラグを設定してもコンテンツが画面いっぱいに表示されることはありません。
私はAndroid Xamarinを使用していて、これは私のために働きました。
SupportActionBar.Hide();
SetContentView(Resource.Layout.activity_main);
@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);
}
}