【问题标题】:MaterialDrawer library turns a translucent status bar into a opaque oneMaterialDrawer 库将半透明状态栏变成不透明状态栏
【发布时间】:2015-09-28 08:09:11
【问题描述】:

我正在使用MaterialDrawer 库为我的活动添加抽屉。活动必须有半透明的状态栏。如下图:

这是我的活动的顶部,当图书馆还没有添加到它时。

当我使用库添加抽屉时:

public class MainActivity extends AppCompatActivity {

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

        DrawerMenu.addTo(this);
    }

}

还有DrawerMenu 辅助类:

public class DrawerMenu {
    public static void addTo(final Activity activity) {
        AccountHeader headerResult = new AccountHeaderBuilder()
            .withActivity(activity)
            .withHeaderBackground(R.drawable.drawer_header)
            .addProfiles(
                    new ProfileDrawerItem()
                            .withName("Ashkan")
                            .withEmail("ashkan@sarlak.com")
                            .withIcon(ContextCompat.getDrawable(activity, R.drawable.profile_pic))
            )
            .withOnAccountHeaderListener(new AccountHeader.OnAccountHeaderListener() {
                @Override
                public boolean onProfileChanged(View view, IProfile profile, boolean currentProfile) {
                    return false;
                }
            })
            .build();

        new DrawerBuilder()
            .withActivity(activity)
            .withAccountHeader(headerResult)
            .addDrawerItems(new PrimaryDrawerItem().withName("Login"))
            .withOnDrawerItemClickListener(new Drawer.OnDrawerItemClickListener() {
                @Override
                public boolean onItemClick(View view, int i, IDrawerItem iDrawerItem) {
                    Toast.makeText(activity, "Login!!!", Toast.LENGTH_LONG).show();
                    return true;
                }
            })
            .build();
    }
}

我会得到这个结果:

状态栏明显不透明,下方没有活动内容。

但是,当我打开抽屉时,它会在状态栏下方:

这也是我在活动中应用的主题:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:windowTranslucentStatus">true</item>
    <item name="android:windowTranslucentNavigation">false</item>
</style>

这里有什么问题?

【问题讨论】:

    标签: android translucency android-statusbar materialdrawer


    【解决方案1】:

    您发布的屏幕截图看起来您的应用应该以全屏模式显示。

    因此,对于您发布的屏幕截图,您使用的是 MaterialDrawer 的基本配置。 在大多数情况下,使用抽屉的人希望他们的内容(包括 工具栏)显示在 StatusBar 下方,而 抽屉 显示在 后面>状态栏。所以这里基本上发生的是 MaterialDrawer 的逻辑将您的应用程序设置为半透明 StatusBar 模式,因此内容将移到它后面。此外,它将添加ScrimInsetsFrameLayout,然后将填充添加到顶部,因此内容将位于StatusBar下方。

    在您的情况下,您希望您的内容也位于 StatusBar 之后,因此您还希望将您的内容移动到 StatusBar 之后。

    这可以通过将withFullscreen(true)标志添加到MaterialDrawerBuilder来实现

    这是以编程方式完成的

    //Create the drawer
    result = new DrawerBuilder()
        .withActivity(this)
        .withFullscreen(true)
        .withSavedInstance(savedInstanceState)
        .build();
    

    这也会使您的 NavigationBar 半透明。

    关于这个主题有一个未解决的问题,它可能也会改善这里的行为。 https://github.com/mikepenz/MaterialDrawer/issues/698

    所以实现一个额外的标志不包括ScrimInsetsFrameLayout https://github.com/mikepenz/MaterialDrawer/issues/698#issuecomment-143674729

    好的作为补充。如果您只希望 StatusBar 是半透明的。那么你必须做以下事情。 为此活动使用TranslucentStatus 主题之一(或其子主题)

    @style/MaterialDrawerTheme.Light.TranslucentStatus
    

    然后构建抽屉,如下所示:

    //Create the drawer
    result = new DrawerBuilder()
        .withActivity(this)
        .withFullscreen(true)
        .withTranslucentNavigationBarProgrammatically(false)
    //note that the translucentNavigationBarProgrammatically comes AFTER the withFullscreen method
    

    这将导致一个透明的 StatusBar 但带有黑色 NavigationBar

    【讨论】:

    • 是的,它以我发布的主题全屏显示。我想如果您可以在自述文件中说明有关全屏活动的信息,因为全屏模式在目前的设计中很常见,这将是有帮助的。谢谢顺便说一句,它解决了这个问题。继续努力。
    • @AshkanSarlak 是的,我一直认为人们会查看示例应用程序并运行它,因为它也在 google play 上。只是为了通知你。我已经扩展了关于如何只获得半透明 StatusBar 和普通 NavigationBar 的答案
    • 哦,我忘了说。您的原始答案没有使 NavigarionBar 半透明。我猜这是因为主题和 false 属性。
    • @AshkanSarlak 是的。我只是想我添加了信息,以便阅读此内容的其他人可以更轻松地解决他们的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    • 2016-04-18
    • 2015-04-07
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 2017-05-28
    相关资源
    最近更新 更多