Skip to content

Commit c64faee

Browse files
committed
feat(notification): improve RecyclerView edge-to-edge insets handling
Also, refactor LocationPicker and DescriptionEdit activities to use extension functions and reduce duplication
1 parent a370028 commit c64faee

File tree

4 files changed

+8
-23
lines changed

4 files changed

+8
-23
lines changed

app/src/main/java/fr/free/nrw/commons/description/DescriptionEditActivity.kt

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,7 @@ import android.speech.RecognizerIntent
77
import android.view.View
88
import androidx.activity.result.ActivityResult
99
import androidx.activity.result.contract.ActivityResultContracts
10-
import androidx.core.view.ViewCompat
1110
import androidx.core.view.WindowCompat
12-
import androidx.core.view.WindowInsetsCompat
13-
import androidx.core.view.updatePadding
1411
import androidx.recyclerview.widget.LinearLayoutManager
1512
import androidx.recyclerview.widget.RecyclerView
1613
import fr.free.nrw.commons.CommonsApplication
@@ -28,6 +25,7 @@ import fr.free.nrw.commons.utils.applyEdgeToEdgeBottomInsets
2825
import fr.free.nrw.commons.upload.UploadMediaDetail
2926
import fr.free.nrw.commons.upload.UploadMediaDetailAdapter
3027
import fr.free.nrw.commons.utils.DialogUtil.showAlertDialog
28+
import fr.free.nrw.commons.utils.applyEdgeToEdgeTopPaddingInsets
3129
import io.reactivex.android.schedulers.AndroidSchedulers
3230
import io.reactivex.functions.Consumer
3331
import io.reactivex.schedulers.Schedulers
@@ -95,14 +93,7 @@ class DescriptionEditActivity :
9593
applyEdgeToEdgeBottomInsets(binding.btnEditSubmit)
9694
WindowCompat.getInsetsController(window, window.decorView)
9795
.isAppearanceLightStatusBars = false
98-
ViewCompat.setOnApplyWindowInsetsListener(binding.toolbar) { v, windowInsets ->
99-
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
100-
101-
v.updatePadding(
102-
top = insets.top
103-
)
104-
WindowInsetsCompat.CONSUMED
105-
}
96+
binding.toolbar.applyEdgeToEdgeTopPaddingInsets()
10697
setContentView(binding.root)
10798

10899
val bundle = intent.extras

app/src/main/java/fr/free/nrw/commons/locationpicker/LocationPickerActivity.kt

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,7 @@ import androidx.core.content.ContextCompat
2525
import androidx.core.content.IntentCompat
2626
import androidx.core.os.BundleCompat
2727
import androidx.core.text.HtmlCompat
28-
import androidx.core.view.ViewCompat
2928
import androidx.core.view.WindowCompat
30-
import androidx.core.view.WindowInsetsCompat
31-
import androidx.core.view.updatePadding
3229
import com.google.android.material.floatingactionbutton.FloatingActionButton
3330
import fr.free.nrw.commons.CameraPosition
3431
import fr.free.nrw.commons.CommonsApplication
@@ -49,6 +46,7 @@ import fr.free.nrw.commons.upload.mediaDetails.UploadMediaDetailFragment.Compani
4946
import fr.free.nrw.commons.utils.DialogUtil
5047
import fr.free.nrw.commons.utils.MapUtils.ZOOM_LEVEL
5148
import fr.free.nrw.commons.utils.applyEdgeToEdgeBottomInsets
49+
import fr.free.nrw.commons.utils.applyEdgeToEdgeTopPaddingInsets
5250
import fr.free.nrw.commons.utils.handleGeoCoordinates
5351
import io.reactivex.android.schedulers.AndroidSchedulers
5452
import io.reactivex.schedulers.Schedulers
@@ -337,14 +335,7 @@ class LocationPickerActivity : BaseActivity(), LocationPermissionCallback {
337335
val toolbar: ConstraintLayout = findViewById(R.id.location_picker_toolbar)
338336
WindowCompat.getInsetsController(window, window.decorView)
339337
.isAppearanceLightStatusBars = false
340-
ViewCompat.setOnApplyWindowInsetsListener(toolbar) { v, windowInsets ->
341-
val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
342-
343-
v.updatePadding(
344-
top = insets.top
345-
)
346-
WindowInsetsCompat.CONSUMED
347-
}
338+
toolbar.applyEdgeToEdgeTopPaddingInsets()
348339
largeToolbarText = findViewById(R.id.location_picker_toolbar_primary_text_view)
349340
smallToolbarText = findViewById(R.id.location_picker_toolbar_secondary_text_view)
350341
toolbar.setBackgroundColor(ContextCompat.getColor(this, R.color.primaryColor))

app/src/main/java/fr/free/nrw/commons/notification/NotificationActivity.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import fr.free.nrw.commons.theme.BaseActivity
2222
import fr.free.nrw.commons.utils.applyEdgeToEdgeTopInsets
2323
import fr.free.nrw.commons.utils.NetworkUtils
2424
import fr.free.nrw.commons.utils.ViewUtil
25+
import fr.free.nrw.commons.utils.applyEdgeToEdgeBottomPaddingInsets
2526
import fr.free.nrw.commons.utils.handleWebUrl
2627
import io.reactivex.Observable
2728
import io.reactivex.android.schedulers.AndroidSchedulers
@@ -57,7 +58,8 @@ class NotificationActivity : BaseActivity() {
5758
super.onCreate(savedInstanceState)
5859
isRead = intent.getStringExtra("title") == "read"
5960
binding = ActivityNotificationBinding.inflate(layoutInflater)
60-
applyEdgeToEdgeTopInsets(binding.root)
61+
applyEdgeToEdgeTopInsets(binding.toolbar.toolbar)
62+
binding.listView.applyEdgeToEdgeBottomPaddingInsets()
6163
setContentView(binding.root)
6264
mNotificationWorkerFragment = supportFragmentManager.findFragmentByTag(
6365
tagNotificationWorkerFragment

app/src/main/res/layout/activity_notification.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
android:scrollbars="vertical"
3636
android:fadeScrollbars="false"
3737
android:scrollbarThumbVertical="@color/primaryColor"
38+
android:clipToPadding="false"
3839
android:scrollbarSize="@dimen/dimen_6"/>
3940

4041
</RelativeLayout>

0 commit comments

Comments
 (0)