このリンクを参照しました。ユーザーが EditText (ex To: の場合) をクリックすると、その時点でキーボードがポップアウトされ、同時にユーザーはスクロールして残りのすべてのビュー (例: 作成、件名、送信ボタン) を表示できます。その画面。同様に、私のアプリには、いくつかのウィジェットまたはビューがあるという 1 つのアクティビティがあります。ユーザーがアクティビティにある Edittext をクリックすると、キーボードが飛び出し、スクロールして残りのビューを表示できるとします。android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
しかし、マニフェストでこの属性を指定すると、スクロールして残りのビューを表示できませんでしたが、属性を指定するとandroid:theme="@android:style/Theme.NoTitleBar"
マニフェストのこのように、スクロールして残りのビューを表示できますが、その画面にステータスバーがあります。ここではフルスクリーンが必要で、キーボードが飛び出していてもスクロールして残りのビューを表示できます..? これにはどのような変更を加える必要がありますか..?
34 に答える
これをあなたのアクティビティに書いてください
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
ここでドキュメントを確認してください: https://developer.android.com/training/system-ui/status.html
アプリが全画面表示になります。ステータスバーもタイトルバーもありません。:)
テーマを使用してアクティビティの"Theme.NoTitleBar.Fullscreen"
設定を試してください 詳細はこちら."android:windowSoftInputMode=adjustResize"
AndroidManifest.xml.
if (Build.VERSION.SDK_INT < 16) {
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
} else {
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
decorView.setSystemUiVisibility(uiOptions);
ActionBar actionBar = getActionBar();
actionBar.hide();
}
1 つのアクティビティでこれが必要な場合は、setContentView の前に onCreate を配置する必要があります。
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.your_screen);
ファイル内のアプリケーションのテーマを変更しmanifest.xml
ます。
android:theme="@android:style/Theme.Translucent.NoTitleBar"
次のコードを使用します。
requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
super.onCreate(savedInstanceState);
setContentView(R.layout.youractivityxmlname);
このコードは、ステータス バーを非表示にします。
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
アクションバーを非表示にするには、次の行を書きます:-
requestWindowFeature(Window.FEATURE_NO_TITLE);
両方の行をまとめて記述して、アクション バーとステータス バーを非表示にすることができます。これらの行はすべて、メソッドsetContentView
内でメソッドを呼び出す前に記述する必要がありますonCreate
。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.Theme_AppCompat_Light_NoActionBar);
requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN
, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity__splash_screen);
}
(4.4+) kitkat 以上のデバイスで全画面表示モードでステータスが表示されるのを防ぐことはできないため、ハックしてステータス バーが拡大しないようにしてください。
ソリューションはかなり大きいので、SOのリンクは次のとおりです。
StackOverflow : Android 4.4+ または全画面表示の kitkat でステータスバーを非表示にします
Composeを使用している場合は、インポートできます
implementation "com.google.accompanist:accompanist-systemuicontroller:0.17.0"
次に、画面に書くだけです
val systemUiController = rememberSystemUiController()
systemUiController.isStatusBarVisible = false
Style.xml ファイルの追加または置換
<item name="android:statusBarColor">@android:color/transparent</item>
で使われるManifest
android:theme="@android:style/Theme.Holo.NoActionBar.Fullscreen"
私は答えるのが非常に遅いことを知っています。この目的のために、相対Javaファイルで次のコードを使用します
Objects.requireNonNull(getSupportActionBar()).hide();
システム UI を表示および非表示にするクリーンでスケーラブルなアプローチは、さまざまな Android API レベルで機能します。
object SystemBarsCompat {
private val api: Api =
when {
Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> Api31()
Build.VERSION.SDK_INT == Build.VERSION_CODES.R -> Api30()
else -> Api()
}
fun hideSystemBars(window: Window, view: View, isImmersiveStickyMode: Boolean = false) =
api.hideSystemBars(window, view, isImmersiveStickyMode)
fun showSystemBars(window: Window, view: View) = api.showSystemBars(window, view)
fun areSystemBarsHidden(view: View): Boolean = api.areSystemBarsHidden(view)
@Suppress("DEPRECATION")
private open class Api {
open fun hideSystemBars(window: Window, view: View, isImmersiveStickyMode: Boolean = false) {
val flags = View.SYSTEM_UI_FLAG_FULLSCREEN or
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or
View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
view.systemUiVisibility = if (isImmersiveStickyMode) {
flags or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
} else {
flags or
View.SYSTEM_UI_FLAG_IMMERSIVE or
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
}
}
open fun showSystemBars(window: Window, view: View) {
view.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
}
open fun areSystemBarsHidden(view: View) = view.systemUiVisibility and View.SYSTEM_UI_FLAG_HIDE_NAVIGATION != 0
}
@Suppress("DEPRECATION")
@RequiresApi(Build.VERSION_CODES.R)
private open class Api30 : Api() {
open val defaultSystemBarsBehavior = WindowInsetsController.BEHAVIOR_SHOW_BARS_BY_SWIPE
override fun hideSystemBars(window: Window, view: View, isImmersiveStickyMode: Boolean) {
window.setDecorFitsSystemWindows(false)
view.windowInsetsController?.let {
it.systemBarsBehavior =
if (isImmersiveStickyMode) WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
else defaultSystemBarsBehavior
it.hide(WindowInsets.Type.systemBars())
}
}
override fun showSystemBars(window: Window, view: View) {
window.setDecorFitsSystemWindows(false)
view.windowInsetsController?.show(WindowInsets.Type.systemBars())
}
override fun areSystemBarsHidden(view: View) = !view.rootWindowInsets.isVisible(WindowInsets.Type.navigationBars())
}
@RequiresApi(Build.VERSION_CODES.S)
private class Api31 : Api30() {
override val defaultSystemBarsBehavior = WindowInsetsController.BEHAVIOR_DEFAULT
}
}
たとえば、システム バーを非表示にするには、次のように呼び出すことができますFragment
。
SystemBarsCompat.hideSystemBars(requireActivity().window, view)
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
res -> values ->styles.xml の下
スタイル本体タグ内貼り付け
<item name="android:windowTranslucentStatus" tools:targetApi="kitkat">true</item>