【问题标题】:StatusBar text color doesn't changed状态栏文本颜色没有改变
【发布时间】:2017-04-03 17:35:29
【问题描述】:

我正在使用此代码更改状态栏背景颜色:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            Window window = getWindow();
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.setStatusBarColor(getColorByResourceId(this, android.R.color.white));
        }
    }

    @ColorInt
    public int getColorByResourceId(@NonNull Context context, @ColorRes int resourceId) {
        return ResourcesCompat.getColor(context.getResources(), resourceId, null);
    }

}

背景变化很好,但文字颜色没有变化(也是白色):

我正在使用 Theme.AppCompat.Light.NoActionBar。如何让状态栏文字颜色变暗?

【问题讨论】:

    标签: android android-statusbar


    【解决方案1】:

    您不能将特定的textColor 设置为statusBar。但是你可以让它在你的 statusBar 背景上可见 API >= 23

    由于您的 statusBar 是 White,您可以在 Base Application Theme 或自定义 statusBar 主题中添加以下属性:

    <item name="android:windowLightStatusBar">true</item>
    

    它会使文本略带灰色,从而使它们在您的白色背景上可见。

    【讨论】:

    • 但据我所知,状态栏文本颜色应该会根据背景颜色自动改变。在我的情况下,这没有发生。它看起来像一些系统错误。
    • 是的,它应该在 colorPrimaryDark 上改变。不幸的是,它对我不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多