フルスクリーンテーマ(タイトルバーなし、アクションバーなし)をアクティビティに適用する方法を知りたいサポートパッケージv7のAppCompatライブラリを使用しています。
特定のアクティビティにAndroid:theme="@Android:style/Theme.NoTitleBar.Fullscreen"
を適用しようとしましたが、クラッシュしました。私のアプリケーションのテーマはこのようなものだからだと思います。
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
私もこれを試しました
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
これはタイトルバーを隠し、アクションバーは隠しません。私の現在の回避策はでアクションバーを隠すことです。
getSupportActionBar().hide();
アプリケーションでTheme.AppCompatを使用するときは、以下のコードをスタイルに追加することによってFullScreenThemeを使用できます。
<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="Android:windowNoTitle">true</item>
<item name="Android:windowActionBar">false</item>
<item name="Android:windowFullscreen">true</item>
<item name="Android:windowContentOverlay">@null</item>
</style>
また、マニフェストファイルにも記載してください。
<activity
Android:name=".activities.FullViewActivity"
Android:theme="@style/Theme.AppCompat.Light.NoActionBar.FullScreen"
/>
@nebyanの回答によると、アクションバーはまだ隠れていないことがわかりました。
次のコードは私のために働きます:
<style name="AppFullScreenTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="Android:windowNoTitle">true</item>
<item name="Android:windowActionBar">false</item>
<item name="Android:windowFullscreen">true</item>
<item name="Android:windowContentOverlay">@null</item>
</style>
そしてもちろんあなたのAndroidManifest
ファイルを編集するのを忘れないでください。
<activity
Android:name="YOUR_ACTIVITY_NAME"
Android:theme="@style/AppFullScreenTheme"
/>
<style name="Theme.AppCompat.Light.NoActionBar" parent="@style/Theme.AppCompat">
<item name="Android:windowNoTitle">true</item>
<item name="Android:windowFullscreen">true</item>
</style>
Style.xmlで上記のxmlを使用すると、タイトルとアクションバーを隠すことができます。
Android 4.0(APIレベル14)の前後のバージョン間で問題が発生します。
from here 私は自分で解決策を作りました。
@SuppressLint("NewApi")
@Override
protected void onResume()
{
super.onResume();
if (Build.VERSION.SDK_INT < 16)
{
// Hide the status bar
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
// Hide the action bar
getSupportActionBar().hide();
}
else
{
// Hide the status bar
getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
/ Hide the action bar
getActionBar().hide();
}
}
このコードはonResume()メソッドで記述します。アプリを終了してから再度開くと、アクションバーがアクティブのままになるためです。 (そしてこれで問題は解決します)
参考になれば幸いです。
あなたの "回避策"(アクションを隠す)は普通の方法です。しかし、Googleでは、TitleBarが非表示になっているときは常にActionBarを非表示にすることをお勧めします。ここで見てみましょう: https://developer.Android.com/training/system-ui/status.html
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//to remove "information bar" above the action bar
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
//to remove the action bar (title bar)
getSupportActionBar().hide();
}
あなたは以下のステップに従うことができます: -
AndoridMenifest.xml
<activity
Android:name=".ui.FullImageActivity"
Android:label="@string/title_activity_main"
Android:screenOrientation="landscape"
Android:theme="@style/DialogTheme">
</activity>
Style.xml
<style name="DialogTheme" parent="Android:Theme.Dialog">
<item name="Android:layout_width">fill_parent</item>
<item name="Android:layout_height">fill_parent</item>
<!-- No backgrounds, titles or window float -->
<item name="Android:windowNoTitle">false</item>
<item name="Android:windowFullscreen">true</item>
<item name="Android:windowIsFloating">false</item>
</style>
FullImageActivity.Java
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
setContentView(R.layout.image_view);
}
お役に立てば幸いです。
parent = "@ style/Theme.AppCompat.Light.NoActionBar" にする必要があります
<style name="Theme.AppCompat.Light.NoActionBar.FullScreen"
parent="@style/Theme.AppCompat.Light.NoActionBar">
<item name="Android:windowNoTitle">true</item>
<item name="Android:windowActionBar">false</item>
<item name="Android:windowFullscreen">true</item>
<item name="Android:windowContentOverlay">@null</item>
</style>
requestWindowFeature(Window.FEATURE_NO_TITLE);
AppCompatのタイトルバーを削除するには
@Override
protected void onCreate(Bundle savedInstanceState) {
supportRequestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
}
<style name="Theme.AppCompat.Light.NoActionBar.FullScreen" parent="@style/Theme.AppCompat.Light">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="Android:windowFullscreen">true</item>
<item name="Android:windowContentOverlay">@null</item>
これだけ?
<style name="Theme.AppCompat.Light.NoActionBar.FullScreen">
<item name="Android:windowFullscreen">true</item>
</style>
次のことを試すことができます :
<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.NoActionBar">
<item name="Android:windowFullscreen">true</item>
</style>
ステータスバーとアクションバーの両方を非表示にしてアクティビティをフルスクリーンにするには、アクティビティのonResume()
メソッドまたはonWindowFocusChanged()
メソッドで次のコードを使用します。
@Override
protected void onResume() {
super.onResume();
View decorView = getWindow().getDecorView();
decorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_FULLSCREEN);
}
次のリンクに詳細情報があります。
注: このスレッドで提供されているxmlソリューションを使用すると、ステータスバーのみを非表示にでき、ナビゲーションバーを非表示にすることができます。
単にあなたのスタイルにこの男で。
<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="Android:windowFullscreen">true</item>
<item name="Android:windowContentOverlay">@null</item> </style>
このテーマは、API 21(付属)以降でのみ機能します。そして、StatusBarとNavigationBarの両方を透明にします。
<style name="TransparentAppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="Android:statusBarColor">@Android:color/transparent</item>
<item name="Android:windowBackground">@Android:color/transparent</item>
<item name="Android:navigationBarColor">@Android:color/transparent</item>
<item name="Android:windowIsTranslucent">true</item>
<item name="Android:windowContentOverlay">@null</item>
</style>