着色透明状态栏

时间:2014-09-16 19:54:51

标签: android android-4.4-kitkat

我正在尝试为应用中的状态栏着色,而不会为活动的整个背景着色。我以为我可以使用以下代码创建一个带有offwhite活动的琥珀色条和状态。但是,offwhite会覆盖琥珀色并将状态设置为白色

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/amber500">

    <!-- colour the bar and status amber -->

    <RelativeLayout xmlns:tools="http://schemas.android.com/tools"
        android:id="@+id/activity_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".GuestbookActivity"
        android:fitsSystemWindows="true"
        android:background="@color/offwhite">

        <!-- main UI in here on offwhite backgroud -->

这是我想要的状态效果,但我不希望列表没有填充空格时显示的琥珀色背景。这没有应用上面最后一行代码

enter image description here

这是我添加最后一行时在另一个活动中发生的事情,即在内部布局中添加一个灰白背景

enter image description here

2 个答案:

答案 0 :(得分:0)

我从未在使用fitsSystemWindows取得任何成功。它似乎永远不适合我,特别是如果我设置了windowTranslucentNavigationwindowTranslucentStatus标志。因此,您必须手动在内部白色div上设置填充。

以下是一个例子:

package com.example.myapp2;

import android.app.Activity;
import android.os.Bundle;

public class MyActivity extends Activity {
    /**
     * Called when the activity is first created.
     */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        int topPadding = 0;
        int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android");
        if (resourceId > 0) {
            topPadding = getResources().getDimensionPixelSize(resourceId);
        }

        int bottomPadding = 0;
        resourceId = getResources().getIdentifier("navigation_bar_height", "dimen", "android");
        if (resourceId > 0) {
            bottomPadding = getResources().getDimensionPixelSize(resourceId);
        }


     findViewById(R.id.background).setPadding(0, topPadding, 0, bottomPadding);
    }
}

和main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:id="@+id/background"
              android:background="#FF0000"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:fitsSystemWindows="false"
        >

    <View
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="#00FF00"
            android:fitsSystemWindows="false" />
</LinearLayout>

答案 1 :(得分:0)

解决方案是使用systembartint。这给了我想要的结果而没有添加任何UI透支