我想让我的状态栏透明,但也没有图标。我设法让它消失了,但它留下了一条没有填充背景的线。我想改变这一点,这样我就可以在没有任何图标的情况下看到背景。
另外,我正在小米Redmi Note 8T上测试它
代码(结果见第一张图片)
主要活动。kt
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
class MainActivity : AppCompatActivity() {
override fun onWindowFocusChanged(hasFocus: Boolean) {
super.onWindowFocusChanged(hasFocus)
if (hasFocus) hideSystemUI()
}
private fun hideSystemUI() {SYSTEM_UI_FLAG_IMMERSIVE_STICKY
window.decorView.systemUiVisibility =
(View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
or View.SYSTEM_UI_FLAG_FULLSCREEN)
}
override fun onCreate(savedInstanceState: Bundle?) {
AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
都themes.xml
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="Theme.TestingSystemModes" parent="Theme.Design.NoActionBar">
<item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
</style>
</resources>
下面是这一行的样子:
我希望它看起来像下图,但没有状态栏的图标:
编辑:我想,是手机让它变成了这样(中间有一个摄像头),可能黑线是为了融入摄像头。这就是为什么,无论我做了什么,它都没有消失。尽管如此,还是要感谢所有试图帮助我的人。
您可以使用下面的线条使其透明,也可以设置修复颜色getWindow()。setSoftInputMode(WindowManager. LayoutParams.SOFT_INPUT_STATE_HIDDEN|WindowManager. LayoutParams.SOFT_INPUT_ADJUST_RESIZE);getWindow()。setStatusBarColor(ContextCompat.getColor(ContaltUsActivity.this,R.color.white ));// 设置状态背景白色
在主题中设置这些属性。就这些
<item name="android:windowTranslucentStatus">true</item>
问题:
手机现在可以有一个“切口”(用于有缺口的手机等。),当你正确隐藏状态栏时,手机会想“好吧,我需要让以前的状态栏只是一个黑色的切口,这样它看起来就不会很傻。”
解决方案是:
实际上你需要做四件事:
代码:
下面是一个简洁的小扩展函数,将涵盖步骤1和3。。。(隐藏状态栏,将decorfitsystemwindows
设置为false)。这样,在你的活动中,就可以简单地把窗口放进去。setInImmersiveMode()
fun Window.setInImmersiveMode() {
val windowInsetsController = ViewCompat.getWindowInsetsController(decorView) ?: return
windowInsetsController.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
windowInsetsController.hide(WindowInsetsCompat.Type.statusBars())
WindowCompat.setDecorFitsSystemWindows(this, false)
}
你需要改变你的主题。xml来告诉Android在这些剪贴画后面画线(仅限api 27及以上版本,因此工具为:targetApi部分):
<item name="android:windowLayoutInDisplayCutoutMode" tools:targetApi="o_mr1">shortEdges</item>
最后,还有一个稍微复杂一点的代码来处理为您的布局设置底部插页——我又把它变成了一个扩展函数,这样您就可以调用view.setup插页()
:
fun View.setupInsets() {
ViewCompat.setOnApplyWindowInsetsListener(this) { view, windowInsets ->
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
view.layoutParams = (view.layoutParams as FrameLayout.LayoutParams).apply {
bottomMargin = insets.bottom
}
WindowInsetsCompat.CONSUMED
}
}
我的styles.xml: 我能做的是:
我注意到当打开我的应用程序时,有两个屏幕可以到达我的第一个颤动屏幕 1-1屏幕有灰色或(50%透明)状态和导航栏黑色和浅色图标。2-2屏幕有100%透明的状态和导航栏和白色图标。 我怎么能让所有的屏幕像第一次颤动屏幕100透明状态和导航栏与黑色图标(亮度暗)。 第一屏 第二屏 第一个颤振筛 风格xml 主要活动。kt 编辑 现在我已经改变了我的代码,第一个屏幕是正确的,但第二个屏幕仍然图标是白色的
嗨,朋友们,我想知道我可以更改状态栏颜色还是使其完全透明。 我已经尝试了这么多,但我不能得到完全透明的状态栏,所以这里是我的代码.. v21/style.xml 和style.xml 我想要这样的.. 有人能帮忙吗?谢谢
我想制作一个完全透明的状态栏和导航栏,就像Google Play那样。当我使用窗口设置来实现它时,键盘会覆盖编辑文本。 当此代码使用键盘输入覆盖的编辑文本时: 此外,该代码并没有使其完全透明,它只是使其半透明 还是这个
有人知道如何使用React Native使Android状态栏透明吗? 不透明,透明。 我也在使用react导航。
我在试着做一个Android发射器。我想实现一个完全透明的状态栏和导航栏,这里是我的主题xml文件。 最后两项不管用,Lollipop上还有影子。 我想实现的(新星发射器): 如何让状态栏和导航栏“透明”而不是“半透明”?