效果图

步骤:
1.style.xml文件
XML
<style name="NoActionBar" parent="Theme.MaterialComponents.DayNight.NoActionBar">
<!-- 让内容布局延伸到状态栏下方 -->
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
<item name="android:windowTranslucentStatus">false</item>
</style>
2.AndroidMainfest.xml文件
XML
<activity
android:name=".ChatActivity"
android:exported="true"
android:screenOrientation="portrait"
android:theme="@style/NoActionBar"
android:windowSoftInputMode="stateVisible|adjustResize" />
3.工具类
java
package com.hat
import android.app.Activity
import android.graphics.Color
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.OnApplyWindowInsetsListener
import androidx.core.view.ViewCompat
import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.view.updatePadding
import com.zbxh.chat.utils.DefaultDarkScrim
import com.zbxh.chat.utils.DefaultLightScrim
import com.zbxh.chat.utils.SystemBarStyle
import com.zbxh.chat.utils.enableEdgeToEdge
class SetSystemBars {
companion object{
fun setupSystemBars(activity: Activity,view: View) {
// 沉浸式状态栏配置
WindowCompat.setDecorFitsSystemWindows(activity.window, false)
activity.window.statusBarColor = Color.TRANSPARENT
val insetsListener = OnApplyWindowInsetsListener { view, insets ->
val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
val item = insets.getInsets(WindowInsetsCompat.Type.ime())
view.updatePadding(
top = 0, // 顶部留出状态栏空间
bottom = item.bottom,//软键盘不遮挡布局,需要预留出软键盘空间
left = systemBars.left,
right = systemBars.right
)
insets
}
ViewCompat.setOnApplyWindowInsetsListener(view, insetsListener)
}
fun setupSystemBars2(activity: Activity) {
(activity as AppCompatActivity).enableEdgeToEdge(
SystemBarStyle.auto(Color.TRANSPARENT, Color.TRANSPARENT),
SystemBarStyle.auto(DefaultLightScrim, DefaultDarkScrim))
}
}
}
4.使用
java
package com.chat;
public class ChatActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//一定要在setContentView前调用
SetSystemBars.Companion.setupSystemBars(this,findViewById(R.id.chat));//R.id.chat是界面中根布局的ID
setContentView(R.layout.activity_chat_main);
}
}