io.github.lucksiege:pictureselector状态栏没沉浸问题
摘要:针对io.github.lucksiege:pictureselector库状态栏未沉浸的问题,通过重写PictureSelectorSupporterActivity类实现修复。关键步骤包括初始化配置、设置沉浸式状态栏(处理状态栏和导航栏颜色)、调整布局边距,并确保语言配置正确。解决方案已通过代码示例和效果对比图展示(修复前后界面差异明显)。若仍有问题,可进一步联系作者沟通。该方案适用于官
·
io.github.lucksiege:pictureselector状态栏没沉浸问题
首先官方地址也有人解决了。
下面给个地址:
https://github.com/LuckSiege/PictureSelector
先看下有问题的图:

你看原生代码没有沉浸上去,官方作者应该也不打算维护了,我们就自己搞吧。
解决方案:重写PictureSelectorSupporterActivity
public class PictureSelectorSupporterActivity extends AppCompatActivity {
private SelectorConfig selectorConfig;
private FrameLayout fragmentContainer;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initSelectorConfig();
setContentView(R.layout.ps_activity_container);
fragmentContainer = findViewById(R.id.fragment_container);
immersive();
ViewCompat.setOnApplyWindowInsetsListener(fragmentContainer, (view, insets) -> {
Insets navigationBar = insets.getInsets(WindowInsetsCompat.Type.navigationBars());
view.setPadding(view.getPaddingLeft(), view.getPaddingTop(), view.getPaddingRight(), navigationBar.bottom);
return WindowInsetsCompat.CONSUMED;
});
setupFragment();
}
private void initSelectorConfig() {
selectorConfig = SelectorProviders.getInstance().getSelectorConfig();
}
private void immersive() {
SelectMainStyle mainStyle = selectorConfig.selectorStyle.getSelectMainStyle();
int statusBarColor = mainStyle.getStatusBarColor();
int navigationBarColor = mainStyle.getNavigationBarColor();
boolean isDarkStatusBarBlack = mainStyle.isDarkStatusBarBlack();
if (!StyleUtils.checkStyleValidity(statusBarColor)) {
statusBarColor = ContextCompat.getColor(this, R.color.ps_color_grey);
}
if (!StyleUtils.checkStyleValidity(navigationBarColor)) {
navigationBarColor = ContextCompat.getColor(this, R.color.ps_color_grey);
}
fragmentContainer.setBackgroundColor(navigationBarColor);
enableEdgeToEdge(
statusBarStyle = SystemBarStyle.light(statusBarColor, statusBarColor),
navigationBarStyle = SystemBarStyle.light(navigationBarColor, navigationBarColor)
);
}
private void setupFragment() {
FragmentInjectManager.injectFragment(this, PictureSelectorFragment.TAG,
PictureSelectorFragment.newInstance());
}
/**
* set app language
*/
public void initAppLanguage() {
if (selectorConfig != null && selectorConfig.language != LanguageConfig.UNKNOWN_LANGUAGE && !selectorConfig.isOnlyCamera) {
PictureLanguageUtils.setAppLanguage(this, selectorConfig.language, selectorConfig.defaultLanguage);
}
}
@Override
public void onConfigurationChanged(@NonNull Configuration newConfig) {
super.onConfigurationChanged(newConfig);
initAppLanguage();
}
@Override
protected void attachBaseContext(Context newBase) {
SelectorConfig selectorConfig = SelectorProviders.getInstance().getSelectorConfig();
if (selectorConfig != null) {
super.attachBaseContext(PictureContextWrapper.wrap(newBase, selectorConfig.language, selectorConfig.defaultLanguage));
} else {
super.attachBaseContext(newBase);
}
}
@Override
public void finish() {
super.finish();
if (selectorConfig != null) {
PictureWindowAnimationStyle windowAnimationStyle = selectorConfig.selectorStyle.getWindowAnimationStyle();
overridePendingTransition(0, windowAnimationStyle.activityExitAnimation);
}
}
}
解决后的效果图:

如果还有问题,可私信我,我每天都看私信的
更多推荐
所有评论(0)