效果图

步骤:
1.style.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文件
<activity
android:name=".ChatActivity"
android:exported="true"
android:screenOrientation="portrait"
android:theme="@style/NoActionBar"
android:windowSoftInputMode="stateVisible|adjustResize" />
3.工具类
说明:
bottom = item.bottom.coerceAtLeast(systemBars.bottom)//优先响应软键盘,否则留出底部导航按钮空间
bottom = item.bottom//软键盘不遮挡布局,需要预留出软键盘空间,不会预留底部导航按钮空间
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.coerceAtLeast(systemBars.bottom),//优先响应软键盘,否则留出导航栏空间
//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.使用
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);
}
}

2286

被折叠的 条评论
为什么被折叠?



