相关疑难解决方法(0)

Lollipop:在statusBar后面绘制颜色设置为透明

我已经将我的statusBar颜色设置为Lollipop的透明颜色,仅在我的主题中使用以下行:

<item name="android:statusBarColor">@android:color/transparent</item>
Run Code Online (Sandbox Code Playgroud)

现在我需要在它背后绘制,但我不能得到它背后的任何视图.我知道如何使用windowTranslucentStatus属性,但不想使用此属性,因为它将忽略statusBar设置为透明的颜色.

android android-ui android-5.0-lollipop

131
推荐指数
6
解决办法
15万
查看次数

状态栏变为白色,并且不显示其背后的内容

我在Marshmallow上尝试AppCompat.我希望有一个透明的状态栏,但它会变成白色.我已经尝试了几个解决方案,但它们对我不起作用(透明状态栏不能使用windowTranslucentNavigation ="false",Lollipop:绘制后面的statusBar,其颜色设置为透明).这是相关的代码.

我的styles.xml

<style name="Bacon" parent="Theme.Bacon"/>

<style name="Theme.Bacon" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/theme_primary</item>
    <item name="colorPrimaryDark">@color/theme_primary_dark</item>
    <item name="colorAccent">@color/theme_accent</item>
    <item name="windowActionBar">false</item>
    <item name="windowActionBarOverlay">true</item>
    <item name="windowNoTitle">true</item>
    <item name="android:windowBackground">@color/background_material_light</item>  
</style>

<style name="Theme.Bacon.Detail" parent="Bacon"/>
Run Code Online (Sandbox Code Playgroud)

V21

<style name="Bacon" parent="Theme.Bacon">
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
</style>

<style name="Theme.Bacon.Detail" parent="Bacon">
    <item name="android:statusBarColor">@android:color/transparent</item>
</style>
Run Code Online (Sandbox Code Playgroud)

活动

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">

<android.support.v4.view.ViewPager
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true" />

</FrameLayout>
Run Code Online (Sandbox Code Playgroud)

分段

<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">

<android.support.design.widget.AppBarLayout
    android:id="@+id/appbar"
    android:layout_width="match_parent"
    android:layout_height="192dp"
    android:fitsSystemWindows="true"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

    <android.support.design.widget.CollapsingToolbarLayout
        android:id="@+id/collapsing_toolbar"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true"
        app:contentScrim="?attr/colorPrimary"
        app:expandedTitleMarginBottom="32dp"
        app:expandedTitleMarginEnd="64dp"
        app:expandedTitleMarginStart="48dp"
        app:layout_scrollFlags="scroll|exitUntilCollapsed" …
Run Code Online (Sandbox Code Playgroud)

android android-appcompat android-support-library androiddesignsupport android-6.0-marshmallow

84
推荐指数
12
解决办法
6万
查看次数

透明状态栏 - Android 4.4之前(KitKat)

我知道在Android 4.4 KitKat(API 19)中,可以使状态栏透明.

但是,例如,Go Launcher Ex和其他人可以选择让它变得透明,而且它也适用于预装KitKat,对我来说(Android 4.3(Jelly Bean))以及我的Android 4.0(冰淇淋三明治)设备.

我不需要root或任何特殊权限来使用它.

下载Go Launcher Ex并亲自试用.对我来说,如果我需要root也可以.

但是他们是怎么做到的?如何在预KitKat设备上使Android的状态栏保持半透明状态?

---澄清事情---

我不是在谈论行动吧 ; 我的意思是状态栏(通知栏)!


看这些示例图片:

(注意,这是从我的股票银河笔记3中获取的Android 4.3Go Launcher Ex.)

(同样适用于我的Galaxy S2Android 4.0.)

没有透明的状态栏:

没有透明条(默认)

随着启用透明状态栏:(我想要实现这个预先4.4(API 19)设备)

使用透明状态栏(我希望以任何方式在4.4之前的设备上实现

java android transparent statusbar

26
推荐指数
1
解决办法
3万
查看次数

Android:状态栏不是转换为新活动的主题

我创建了一个包含2个活动的简单应用程序.主(启动器)活动以适当的方式主题colorPrimaryDark应用于状态栏.但是当我转换到新活动时,除状态栏外,一切似乎都正常.它以某种方式着色为白色.知道为什么会发生这种情况吗?

在OnePlus One(Lollipop 5.0.2)上运行

目标api - > 16+

在此输入图像描述

价值观/ styles.xml

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/PrimaryColor</item>
    <item name="colorPrimaryDark">@color/PrimaryDarkColor</item>
    <item name="colorAccent">@color/accent</item>
    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
</style>
Run Code Online (Sandbox Code Playgroud)

值-V21/styles.xml

<style name="AppTheme" parent="AppTheme.Base">
    <item name="android:windowContentTransitions">true</item>
    <item name="android:windowAllowEnterTransitionOverlap">true</item>
    <item name="android:windowAllowReturnTransitionOverlap">true</item>
    <item name="android:windowSharedElementEnterTransition">@android:transition/slide_bottom</item>
    <item name="android:windowSharedElementExitTransition">@android:transition/move</item>
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
</style>
Run Code Online (Sandbox Code Playgroud)

布局/ activity_settings.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#856"
    android:fitsSystemWindows="true"
    android:orientation="vertical"
    tools:context=".SettingsActivity">

    <include layout="@layout/toolbar" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

android statusbar android-activity android-5.0-lollipop

10
推荐指数
1
解决办法
2867
查看次数

动态更改状态栏颜色而不会失去透明度

我知道我可以colorPrimary用来确定颜色Toolbar,并colorPrimaryDark确定状态栏的颜色.

我正在使用以下主题

<!-- Base application theme. -->
<style name="Theme.Noteplus.Base.Brown" parent="Theme.AppCompat.Light.DarkActionBar">

    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimaryLight</item>
    <item name="colorPrimaryDark">#ff0000</item>

    <item name="windowActionBar">false</item>
    <item name="windowNoTitle">true</item>
Run Code Online (Sandbox Code Playgroud)

其中一个有趣的属性是,当我滑出导航菜单时,状态栏会自动变为透明状态.


在运行期间,有时我想更改状态栏的颜色.

setTitle("Recycler bin");
toolbar.setBackgroundColor(Color.BLUE);
getWindow().setStatusBarColor(Color.parseColor("#5694FF"));
Run Code Online (Sandbox Code Playgroud)

它看起来如下

不幸的是,setStatusBarColor当我们滑出导航菜单时,调用也会丢失状态栏的透明度属性.

我可以知道,如何在运行时更改状态栏颜色,而不会损失其透明属性?对于我的情况,在运行期间将状态栏更改为蓝色后,当我滑出导航抽屉时,我希望看到状态栏透明度属性被保留.


更新

我试过了

private void setStatusBarColor(int color) {
    if (Build.VERSION.SDK_INT >= 21) {
        Window window = getWindow();
        window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
        window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
        window.setStatusBarColor(color);
    }
}
Run Code Online (Sandbox Code Playgroud)

导航抽屉滑出时,提供透明属性无效.

android android-layout android-view drawerlayout windowinsets

5
推荐指数
1
解决办法
866
查看次数

状态栏(通知栏)在使用CoordinatorLayout滚动时消失

我使用Android Studio中的默认模板使用CoordinatorLayout.

但是,当我向下滚动时,通知栏(状态栏)将滚出屏幕.这个效果可以在这个视频中看到. https://youtu.be/1oAqEpg7N4I

我已经包含了相关部分,但其余代码可以在这里找到:https: //github.com/vidia/MaterialDiningCourts/blob/master/app/src/main/res/layout/activity_meal_view.xml

在演示(cheesesquare)中,行为是我所期望的,将通知栏留在原位并且工具栏在其下方滚动.我已经搜索了这些布局并对我的代码进行了更改以匹配它们,但是无法找到必要的更改.

是什么导致通知栏滚动页面,为什么Android Studio中的示例有这种不正确的行为?

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:context=".MealViewActivity">

<android.support.v4.view.ViewPager
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior" />

<android.support.design.widget.AppBarLayout
    android:id="@+id/appbar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:layout_scrollFlags="scroll|enterAlways|snap"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

        <Spinner
            android:id="@+id/meal_chooser_spinner"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            />

    </android.support.v7.widget.Toolbar>

    <android.support.design.widget.TabLayout
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:theme="@style/AppTabLayout"
        android:foregroundGravity="top"
        app:tabIndicatorColor="@color/tabSelectedIndicatorColor"/>
</android.support.design.widget.AppBarLayout>
Run Code Online (Sandbox Code Playgroud)

和styles.xml,虽然我已经从这个文件中删除了我的自定义主题,但它没有帮助解决这个问题.

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="@style/Theme.AppCompat.Light">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item> …
Run Code Online (Sandbox Code Playgroud)

android android-layout

2
推荐指数
1
解决办法
3303
查看次数