Tôi đọc các bình luận về ứng dụng danh bạ và cách nó sử dụng một chủ đề cho mỗi liên hệ.
Có lẽ, ứng dụng danh bạ có một số chủ đề xác định trước (đối với mỗi màu chính của vật liệu từ đây: http://www.google.com/design/spec/style/color.html ).
Bạn có thể áp dụng một chủ đề trước một phương thức setContentView bên trong phương thức onCreate.
Sau đó, ứng dụng danh bạ có thể áp dụng một chủ đề ngẫu nhiên cho mỗi người dùng.
Phương pháp này là:
setTheme(R.style.MyRandomTheme);
Nhưng phương pháp này có một vấn đề, ví dụ nó có thể thay đổi màu thanh công cụ, màu hiệu ứng cuộn, màu gợn, v.v., nhưng nó không thể thay đổi màu thanh trạng thái và màu thanh điều hướng (nếu bạn cũng muốn thay đổi nó).
Sau đó, để giải quyết vấn đề này, bạn có thể sử dụng phương pháp trước và:
if (Build.VERSION.SDK_INT >= 21) {
getWindow().setNavigationBarColor(getResources().getColor(R.color.md_red_500));
getWindow().setStatusBarColor(getResources().getColor(R.color.md_red_700));
}
Hai phương pháp này thay đổi màu thanh điều hướng và trạng thái. Hãy nhớ rằng, nếu bạn đặt mờ thanh điều hướng, bạn không thể thay đổi màu của nó.
Đây phải là mã cuối cùng:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.MyRandomTheme);
if (Build.VERSION.SDK_INT >= 21) {
getWindow().setNavigationBarColor(getResources().getColor(R.color.myrandomcolor1));
getWindow().setStatusBarColor(getResources().getColor(R.color.myrandomcolor2));
}
setContentView(R.layout.activity_main);
}
Bạn có thể sử dụng một công tắc và tạo số ngẫu nhiên để sử dụng các chủ đề ngẫu nhiên, hoặc, như trong ứng dụng danh bạ, mỗi liên hệ có thể có một số xác định trước được liên kết.
Một mẫu chủ đề:
<style name="MyRandomTheme" parent="Theme.AppCompat.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/myrandomcolor1</item>
<item name="colorPrimaryDark">@color/myrandomcolor2</item>
<item name="android:navigationBarColor">@color/myrandomcolor1</item>
</style>
Xin lỗi vì tiếng Anh của tôi.