diff --git a/app/src/main/java/com/tymex/github/users/ui/BaseActivity.kt b/app/src/main/java/com/tymex/github/users/ui/BaseActivity.kt
index 6d307dc..9483d8b 100644
--- a/app/src/main/java/com/tymex/github/users/ui/BaseActivity.kt
+++ b/app/src/main/java/com/tymex/github/users/ui/BaseActivity.kt
@@ -4,7 +4,7 @@ import android.os.Bundle
import android.view.Gravity
import androidx.appcompat.app.ActionBar
import androidx.appcompat.app.AppCompatActivity
-import com.tymex.github.users.databinding.CustomActionbarTitleBinding
+import com.tymex.github.users.databinding.ToolbarBinding
abstract class BaseActivity : AppCompatActivity() {
@@ -12,12 +12,15 @@ abstract class BaseActivity : AppCompatActivity() {
super.onCreate(savedInstanceState)
supportActionBar?.let {
- it.setDisplayHomeAsUpEnabled(true)
+ it.setDisplayHomeAsUpEnabled(false)
it.setDisplayShowTitleEnabled(false)
it.setDisplayShowCustomEnabled(true)
- val titleBinding = CustomActionbarTitleBinding.inflate(layoutInflater)
- titleBinding.root.text = getToolbarTitle()
+ val titleBinding = ToolbarBinding.inflate(layoutInflater)
+ titleBinding.tvTitle.text = getToolbarTitle()
+ titleBinding.ivBack.setOnClickListener {
+ onBackPressedDispatcher.onBackPressed()
+ }
val actionBarParams = ActionBar.LayoutParams(
ActionBar.LayoutParams.MATCH_PARENT,
ActionBar.LayoutParams.WRAP_CONTENT,
@@ -25,7 +28,16 @@ abstract class BaseActivity : AppCompatActivity() {
)
it.setCustomView(titleBinding.root, actionBarParams)
}
+
+ window.apply {
+ setLightStatusBar()
+ setStatusBarColorCompat(android.R.color.white)
+ }
+
}
+ /**
+ * Override this to set Toolbar's title text
+ */
abstract fun getToolbarTitle(): String
}
\ No newline at end of file
diff --git a/app/src/main/java/com/tymex/github/users/ui/UserDetailsActivity.kt b/app/src/main/java/com/tymex/github/users/ui/UserDetailsActivity.kt
index df3b823..6d469c4 100644
--- a/app/src/main/java/com/tymex/github/users/ui/UserDetailsActivity.kt
+++ b/app/src/main/java/com/tymex/github/users/ui/UserDetailsActivity.kt
@@ -46,6 +46,10 @@ class UserDetailsActivity : BaseActivity() {
usersViewModel = ViewModelProvider(this)[UserViewModelImpl::class.java]
}
+
+ /**
+ * Parse & display user details from a [FlowState]
+ */
private fun handleUserDetailsFlow(flowState: FlowState) {
when (flowState) {
is FlowState.Loading -> {
diff --git a/app/src/main/java/com/tymex/github/users/ui/UsersActivity.kt b/app/src/main/java/com/tymex/github/users/ui/UsersActivity.kt
index 2f945c0..99b83d7 100644
--- a/app/src/main/java/com/tymex/github/users/ui/UsersActivity.kt
+++ b/app/src/main/java/com/tymex/github/users/ui/UsersActivity.kt
@@ -42,7 +42,6 @@ class UsersActivity : BaseActivity() {
super.onCreate(savedInstanceState)
binding = ActivityUsersBinding.inflate(layoutInflater)
setContentView(binding.root)
- supportActionBar?.setDisplayHomeAsUpEnabled(true)
initUsersList()
initViewModel()
@@ -98,6 +97,9 @@ class UsersActivity : BaseActivity() {
}
}
+ /**
+ * Parse users data from [FlowState] to inflate into list view
+ */
private fun handleUsersFlow(flowState: FlowState) {
when (flowState) {
is FlowState.Loading -> {
diff --git a/app/src/main/java/com/tymex/github/users/ui/WindowExtensions.kt b/app/src/main/java/com/tymex/github/users/ui/WindowExtensions.kt
new file mode 100644
index 0000000..c700109
--- /dev/null
+++ b/app/src/main/java/com/tymex/github/users/ui/WindowExtensions.kt
@@ -0,0 +1,47 @@
+package com.tymex.github.users.ui
+
+import android.R
+import android.os.Build
+import android.view.View
+import android.view.Window
+import android.view.WindowInsetsController
+import android.view.WindowManager
+import androidx.core.content.ContextCompat
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowInsetsCompat
+
+fun Window.setLightStatusBar() {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
+ this.insetsController?.setSystemBarsAppearance(
+ WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS,
+ WindowInsetsController.APPEARANCE_LIGHT_STATUS_BARS
+ )
+ } else {
+ this.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
+ }
+}
+
+fun Window.setStatusBarColorCompat(color: Int) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.VANILLA_ICE_CREAM) {
+
+ this.decorView.setBackgroundColor(ContextCompat.getColor(this.context, color))
+
+ // Apply window insets to avoid overlapping with system bars
+ ViewCompat.setOnApplyWindowInsetsListener(
+ this.decorView.findViewById(R.id.content)
+ ) { v, insets ->
+ val systemBarsInsets =
+ insets.getInsets(WindowInsetsCompat.Type.systemBars())
+ v.setPadding(
+ v.getPaddingLeft(),
+ systemBarsInsets.top,
+ v.getPaddingRight(),
+ systemBarsInsets.bottom
+ )
+ WindowInsetsCompat.CONSUMED
+ }
+ } else {
+ this.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
+ this.statusBarColor = ContextCompat.getColor(this.context, color)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_user_details.xml b/app/src/main/res/layout/activity_user_details.xml
index eb70f0a..edaae87 100644
--- a/app/src/main/res/layout/activity_user_details.xml
+++ b/app/src/main/res/layout/activity_user_details.xml
@@ -51,6 +51,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/common_margin"
+ android:gravity="center_horizontal"
app:layout_constraintEnd_toEndOf="@+id/iv_following"
app:layout_constraintStart_toStartOf="@+id/iv_following"
app:layout_constraintTop_toBottomOf="@+id/iv_followers"
diff --git a/app/src/main/res/layout/custom_actionbar_title.xml b/app/src/main/res/layout/custom_actionbar_title.xml
deleted file mode 100644
index cf40e6f..0000000
--- a/app/src/main/res/layout/custom_actionbar_title.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
diff --git a/app/src/main/res/layout/toolbar.xml b/app/src/main/res/layout/toolbar.xml
new file mode 100644
index 0000000..5db6b71
--- /dev/null
+++ b/app/src/main/res/layout/toolbar.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml
index deddcd0..9544c00 100644
--- a/app/src/main/res/values-night/themes.xml
+++ b/app/src/main/res/values-night/themes.xml
@@ -1,4 +1,4 @@
-
+