Chà, giải pháp của Izhar vẫn ổn, nhưng cá nhân tôi, tôi đang cố gắng tránh mã có vẻ như thế này:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
//Do what you need for this SDK
};
Đồng thời, tôi cũng không muốn sao chép mã. Trong câu trả lời của bạn, tôi phải thêm dòng mã như vậy trong tất cả các Hoạt động:
setStatusBarColor(findViewById(R.id.statusBarBackground),getResources().getColor(android.R.color.white));
Vì vậy, tôi đã lấy giải pháp Izhar và sử dụng XML để nhận được kết quả tương tự: Tạo bố cục cho StatusBar status_bar.xml
<View xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/statusBarHeight"
android:background="@color/primaryColorDark"
android:elevation="@dimen/statusBarElevation">
Lưu ý các thuộc tính chiều cao và độ cao, chúng sẽ được đặt trong các giá trị, giá trị-v19, giá trị-v21 xuống.
Thêm bố cục này vào bố cục hoạt động của bạn bằng cách sử dụng bao gồm, main_activity.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/Black" >
<include layout="@layout/status_bar"/>
<include android:id="@+id/app_bar" layout="@layout/app_bar"/>
//The rest of your layout
</RelativeLayout>
Đối với Thanh công cụ, thêm thuộc tính lề trên:
<android.support.v7.widget.Toolbar 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="?android:attr/actionBarSize"
android:background="@color/primaryColor"
app:theme="@style/MyCustomToolBarTheme"
app:popupTheme="@style/ThemeOverlay.AppCompat.Dark"
android:elevation="@dimen/toolbarElevation"
android:layout_marginTop="@dimen/appBarTopMargin"
android:textDirection="ltr"
android:layoutDirection="ltr">
Trong appTheme style-v19.xml và style-v21.xml của bạn, hãy thêm cửa sổ attTranslucent:
kiểu-v19.xml, v21:
<resources>
<item name="android:windowTranslucentStatus">true</item>
</resources>
Và cuối cùng, trên dimens của bạn, dimens-v19, dimens-v21, thêm các giá trị cho Thanh công cụ topMargin và chiều cao của statusBarHeight: dimens.xml với giá thấp hơn KitKat:
<resources>
<dimen name="toolbarElevation">4dp</dimen>
<dimen name="appBarTopMargin">0dp</dimen>
<dimen name="statusBarHeight">0dp</dimen>
</resources>
Chiều cao của thanh trạng thái luôn là 24dp dimens-v19.xml cho KitKat trở lên:
<resources>
<dimen name="statusBarHeight">24dp</dimen>
<dimen name="appBarTopMargin">24dp</dimen>
</resources>
dimens-v21.xml cho Lolipop, chỉ cần thêm độ cao nếu cần:
<resources>
<dimen name="statusBarElevation">4dp</dimen>
</resources>
Đây là kết quả cho Jellybean KitKat và Lollipop: