diff --git a/app/build.gradle b/app/build.gradle
index b4068540..7e243c89 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -119,7 +119,8 @@ dependencies {
// UI
implementation 'com.google.android.material:material:1.11.0'
- implementation 'nl.joery.animatedbottombar:library:1.1.0'
+ //implementation 'nl.joery.animatedbottombar:library:1.1.0'
+ implementation 'com.github.rebelonion:AnimatedBottomBar:v1.1.0'
implementation 'com.flaviofaria:kenburnsview:1.0.7'
implementation 'com.davemorrissey.labs:subsampling-scale-image-view-androidx:3.10.0'
implementation 'com.alexvasilkov:gesture-views:2.8.3'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f94b5f24..43fd8651 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -104,6 +104,7 @@
android:parentActivityName=".MainActivity" />
{
bottomMargin = navBarHeight
-
}
}
intent.extras?.let { extras ->
diff --git a/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt b/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt
index 5f82bcfa..5cfa1f77 100644
--- a/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt
+++ b/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt
@@ -2,7 +2,9 @@ package ani.dantotsu.media
import android.animation.ObjectAnimator
import android.annotation.SuppressLint
+import android.app.Activity
import android.content.Intent
+import android.graphics.Rect
import android.os.Bundle
import android.text.SpannableStringBuilder
import android.util.TypedValue
@@ -10,7 +12,9 @@ import android.view.GestureDetector
import android.view.MotionEvent
import android.view.View
import android.view.ViewGroup
+import android.view.WindowManager
import android.view.animation.AccelerateDecelerateInterpolator
+import android.widget.FrameLayout
import android.widget.ImageView
import androidx.activity.viewModels
import androidx.appcompat.app.AppCompatActivity
@@ -18,6 +22,7 @@ import androidx.appcompat.content.res.AppCompatResources
import androidx.core.content.ContextCompat
import androidx.core.text.bold
import androidx.core.text.color
+import androidx.core.view.marginBottom
import androidx.core.view.updateLayoutParams
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
@@ -25,7 +30,6 @@ import androidx.lifecycle.Lifecycle
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.lifecycleScope
import androidx.viewpager2.adapter.FragmentStateAdapter
-import ani.dantotsu.CustomBottomNavBar
import ani.dantotsu.GesturesListener
import ani.dantotsu.R
import ani.dantotsu.Refresh
@@ -41,6 +45,7 @@ import ani.dantotsu.media.manga.MangaReadFragment
import ani.dantotsu.media.novel.NovelReadFragment
import ani.dantotsu.navBarHeight
import ani.dantotsu.openLinkInBrowser
+import ani.dantotsu.others.AndroidBug5497Workaround
import ani.dantotsu.others.ImageViewDialog
import ani.dantotsu.others.getSerialized
import ani.dantotsu.settings.saving.PrefManager
@@ -50,7 +55,6 @@ import ani.dantotsu.statusBarHeight
import ani.dantotsu.themes.ThemeManager
import com.flaviofaria.kenburnsview.RandomTransitionGenerator
import com.google.android.material.appbar.AppBarLayout
-import com.google.android.material.navigation.NavigationBarView
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
@@ -65,7 +69,7 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi
lateinit var binding: ActivityMediaBinding
private val scope = lifecycleScope
private val model: MediaDetailsViewModel by viewModels()
- private lateinit var tabLayout: NavigationBarView
+ lateinit var tabLayout: TripleNavAdapter
var selected = 0
var anime = true
private var adult = false
@@ -96,19 +100,30 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi
setContentView(binding.root)
screenWidth = resources.displayMetrics.widthPixels.toFloat()
+ val isVertical = resources.configuration.orientation
//Ui init
initActivity(this)
-
+ val oldMargin = binding.mediaViewPager.marginBottom
+ AndroidBug5497Workaround.assistActivity(this) {
+ if (it) {
+ binding.mediaViewPager.updateLayoutParams {
+ bottomMargin = 0
+ }
+ binding.mediaTabContainer.visibility = View.GONE
+ } else {
+ binding.mediaViewPager.updateLayoutParams {
+ bottomMargin = oldMargin
+ }
+ binding.mediaTabContainer.visibility = View.VISIBLE
+ }
+ }
binding.mediaBanner.updateLayoutParams { height += statusBarHeight }
binding.mediaBannerNoKen.updateLayoutParams { height += statusBarHeight }
binding.mediaClose.updateLayoutParams { topMargin += statusBarHeight }
binding.incognito.updateLayoutParams { topMargin += statusBarHeight }
binding.mediaCollapsing.minimumHeight = statusBarHeight
-
- if (binding.mediaTab is CustomBottomNavBar) binding.mediaTab.updateLayoutParams {
- bottomMargin = navBarHeight
- }
+ //binding.mediaViewPager.updateLayoutParams { bottomMargin = navBarHeight }
binding.mediaTitle.isSelected = true
@@ -131,7 +146,7 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi
val banner =
if (bannerAnimations) binding.mediaBanner else binding.mediaBannerNoKen
val viewPager = binding.mediaViewPager
- tabLayout = binding.mediaTab as NavigationBarView
+ //tabLayout = binding.mediaTab as AnimatedBottomBar
viewPager.isUserInputEnabled = false
viewPager.setPageTransformer(ZoomOutPageTransformer())
@@ -325,12 +340,18 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi
progress()
}
}
+ tabLayout = TripleNavAdapter(
+ binding.mediaTab1,
+ binding.mediaTab2,
+ binding.mediaTab3,
+ media.anime != null,
+ media.format ?: "",
+ isVertical == 1
+ )
adult = media.isAdult
- tabLayout.menu.clear()
if (media.anime != null) {
viewPager.adapter =
ViewPagerAdapter(supportFragmentManager, lifecycle, SupportedMedia.ANIME, media, intent.getIntExtra("commentId", -1))
- tabLayout.inflateMenu(R.menu.anime_menu_detail)
} else if (media.manga != null) {
viewPager.adapter = ViewPagerAdapter(
supportFragmentManager,
@@ -339,30 +360,23 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi
media,
intent.getIntExtra("commentId", -1)
)
- if (media.format == "NOVEL") {
- tabLayout.inflateMenu(R.menu.novel_menu_detail)
- } else {
- tabLayout.inflateMenu(R.menu.manga_menu_detail)
- }
anime = false
}
selected = media.selected!!.window
binding.mediaTitle.translationX = -screenWidth
- tabLayout.visibility = View.VISIBLE
- tabLayout.setOnItemSelectedListener { item ->
- selectFromID(item.itemId)
+ tabLayout.selectionListener = { selected, newId ->
+ this.selected = selected
+ selectFromID(newId)
viewPager.setCurrentItem(selected, false)
val sel = model.loadSelected(media, isDownload)
sel.window = selected
model.saveSelected(media.id, sel)
- true
}
-
-
- tabLayout.selectedItemId = idFromSelect()
+ tabLayout.selectTab(selected)
+ selectFromID(tabLayout.selected)
viewPager.setCurrentItem(selected, false)
if (model.continueMedia == null && media.cameFromContinue) {
@@ -385,7 +399,6 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi
}
}
-
private fun selectFromID(id: Int) {
when (id) {
R.id.info -> {
@@ -418,7 +431,7 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi
override fun onResume() {
if (this::tabLayout.isInitialized) {
- tabLayout.selectedItemId = idFromSelect()
+ tabLayout.selectTab(selected)
}
super.onResume()
}
@@ -586,5 +599,4 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi
companion object {
var mediaSingleton: Media? = null
}
-}
-
+}
\ No newline at end of file
diff --git a/app/src/main/java/ani/dantotsu/media/TripleNavAdapter.kt b/app/src/main/java/ani/dantotsu/media/TripleNavAdapter.kt
new file mode 100644
index 00000000..08bf4b72
--- /dev/null
+++ b/app/src/main/java/ani/dantotsu/media/TripleNavAdapter.kt
@@ -0,0 +1,112 @@
+package ani.dantotsu.media
+
+import android.graphics.Color
+import android.view.ViewGroup
+import androidx.core.view.updateLayoutParams
+import ani.dantotsu.R
+import ani.dantotsu.navBarHeight
+import nl.joery.animatedbottombar.AnimatedBottomBar
+
+class TripleNavAdapter(
+ private val nav1: AnimatedBottomBar,
+ private val nav2: AnimatedBottomBar,
+ private val nav3: AnimatedBottomBar,
+ anime: Boolean,
+ format: String,
+ isVertical: Boolean = false
+) {
+ var selected: Int = 0
+ var selectionListener: ((Int, Int) -> Unit)? = null
+ init {
+ nav1.tabs.clear()
+ nav2.tabs.clear()
+ nav3.tabs.clear()
+ val infoTab = nav1.createTab(R.drawable.ic_round_info_24, R.string.info, R.id.info)
+ val watchTab = if (anime) {
+ nav2.createTab(R.drawable.ic_round_movie_filter_24, R.string.watch, R.id.watch)
+ } else if (format == "NOVEL") {
+ nav2.createTab(R.drawable.ic_round_book_24, R.string.read, R.id.read)
+ } else {
+ nav2.createTab(R.drawable.ic_round_import_contacts_24, R.string.read, R.id.read)
+ }
+ val commentTab = nav3.createTab(R.drawable.ic_round_comment_24, R.string.comments, R.id.comment)
+ nav1.addTab(infoTab)
+ nav2.addTab(watchTab)
+ nav3.addTab(commentTab)
+ nav1.visibility = ViewGroup.VISIBLE
+ nav2.visibility = ViewGroup.VISIBLE
+ nav3.visibility = ViewGroup.VISIBLE
+ if (!isVertical) {
+ nav1.indicatorColor = Color.TRANSPARENT
+ nav2.indicatorColor = Color.TRANSPARENT
+ nav3.indicatorColor = Color.TRANSPARENT
+ }
+ nav1.setOnTabSelectListener(object : AnimatedBottomBar.OnTabSelectListener {
+ override fun onTabSelected(
+ lastIndex: Int,
+ lastTab: AnimatedBottomBar.Tab?,
+ newIndex: Int,
+ newTab: AnimatedBottomBar.Tab
+ ) {
+ selected = 0
+ deselectOthers(selected)
+ selectionListener?.invoke(selected, newTab.id)
+ }
+ })
+ nav2.setOnTabSelectListener(object : AnimatedBottomBar.OnTabSelectListener {
+ override fun onTabSelected(
+ lastIndex: Int,
+ lastTab: AnimatedBottomBar.Tab?,
+ newIndex: Int,
+ newTab: AnimatedBottomBar.Tab
+ ) {
+ selected = 1
+ deselectOthers(selected)
+ selectionListener?.invoke(selected, newTab.id)
+ }
+ })
+ nav3.setOnTabSelectListener(object : AnimatedBottomBar.OnTabSelectListener {
+ override fun onTabSelected(
+ lastIndex: Int,
+ lastTab: AnimatedBottomBar.Tab?,
+ newIndex: Int,
+ newTab: AnimatedBottomBar.Tab
+ ) {
+ selected = 2
+ deselectOthers(selected)
+ selectionListener?.invoke(selected, newTab.id)
+ }
+ })
+ }
+
+ private fun deselectOthers(selected: Int) {
+ if (selected == 0) {
+ nav2.clearSelection()
+ nav3.clearSelection()
+ }
+ if (selected == 1) {
+ nav1.clearSelection()
+ nav3.clearSelection()
+ }
+ if (selected == 2) {
+ nav1.clearSelection()
+ nav2.clearSelection()
+ }
+ }
+
+ fun selectTab(tab: Int) {
+ when (tab) {
+ 0 -> nav1.selectTabAt(0)
+ 1 -> nav2.selectTabAt(0)
+ 2 -> nav3.selectTabAt(0)
+ }
+ selected = tab
+ deselectOthers(selected)
+ }
+
+ fun setVisibility(visibility: Int) {
+ nav1.visibility = visibility
+ nav2.visibility = visibility
+ nav3.visibility = visibility
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchFragment.kt b/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchFragment.kt
index 9d720020..d1aa9730 100644
--- a/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchFragment.kt
+++ b/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchFragment.kt
@@ -358,11 +358,9 @@ class AnimeWatchFragment : Fragment() {
activity.findViewById(R.id.mediaViewPager).visibility = visibility
activity.findViewById(R.id.mediaCover).visibility = visibility
activity.findViewById(R.id.mediaClose).visibility = visibility
- try {
- activity.findViewById(R.id.mediaTab).visibility = visibility
- } catch (e: ClassCastException) {
- activity.findViewById(R.id.mediaTab).visibility = visibility
- }
+
+ activity.tabLayout.setVisibility(visibility)
+
activity.findViewById(R.id.fragmentExtensionsContainer).visibility =
if (show) View.GONE else View.VISIBLE
}
diff --git a/app/src/main/java/ani/dantotsu/media/comments/CommentItem.kt b/app/src/main/java/ani/dantotsu/media/comments/CommentItem.kt
index 25a02587..f4655c44 100644
--- a/app/src/main/java/ani/dantotsu/media/comments/CommentItem.kt
+++ b/app/src/main/java/ani/dantotsu/media/comments/CommentItem.kt
@@ -262,10 +262,10 @@ class CommentItem(val comment: Comment,
val minutes = diff / (60 * 1000) % 60
return when {
- days > 0 -> "$days days ago"
- hours > 0 -> "$hours hours ago"
- minutes > 0 -> "$minutes minutes ago"
- else -> "just now"
+ days > 0 -> "${days}d"
+ hours > 0 -> "${hours}h"
+ minutes > 0 -> "${minutes}m"
+ else -> "now"
}
} catch (e: Exception) {
"now"
diff --git a/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt b/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt
index bd7881eb..64b968c1 100644
--- a/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt
+++ b/app/src/main/java/ani/dantotsu/media/comments/CommentsFragment.kt
@@ -11,6 +11,7 @@ import android.text.TextWatcher
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.view.WindowManager
import android.view.inputmethod.InputMethodManager
import android.widget.EditText
import androidx.appcompat.app.AppCompatActivity
@@ -25,6 +26,7 @@ import ani.dantotsu.connections.anilist.Anilist
import ani.dantotsu.connections.comments.Comment
import ani.dantotsu.connections.comments.CommentResponse
import ani.dantotsu.connections.comments.CommentsAPI
+import ani.dantotsu.copyToClipboard
import ani.dantotsu.databinding.FragmentCommentsBinding
import ani.dantotsu.loadImage
import ani.dantotsu.media.MediaDetailsActivity
@@ -88,7 +90,6 @@ class CommentsFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
activity = requireActivity() as AppCompatActivity
- (activity as? MediaDetailsActivity)?.binding?.mediaAppBar?.setExpanded(false, true)
//get the media id from the intent
val mediaId = arguments?.getInt("mediaId") ?: -1
mediaName = arguments?.getString("mediaName") ?: "unknown"
@@ -695,7 +696,7 @@ class CommentsFragment : Fragment() {
.usePlugin(object : AbstractMarkwonPlugin() {
override fun configureConfiguration(builder: MarkwonConfiguration.Builder) {
builder.linkResolver { view, link ->
- // do nothing
+ copyToClipboard(link, true)
}
}
})
diff --git a/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt b/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt
index e21d7fc7..2d570043 100644
--- a/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt
+++ b/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt
@@ -372,11 +372,7 @@ open class MangaReadFragment : Fragment(), ScanlatorSelectionListener {
activity.findViewById(R.id.mediaViewPager).visibility = visibility
activity.findViewById(R.id.mediaCover).visibility = visibility
activity.findViewById(R.id.mediaClose).visibility = visibility
- try {
- activity.findViewById(R.id.mediaTab).visibility = visibility
- } catch (e: ClassCastException) {
- activity.findViewById(R.id.mediaTab).visibility = visibility
- }
+ activity.tabLayout.setVisibility(visibility)
activity.findViewById(R.id.fragmentExtensionsContainer).visibility =
if (show) View.GONE else View.VISIBLE
}
diff --git a/app/src/main/java/ani/dantotsu/others/AndroidBug5497Workaround.kt b/app/src/main/java/ani/dantotsu/others/AndroidBug5497Workaround.kt
new file mode 100644
index 00000000..46e8a297
--- /dev/null
+++ b/app/src/main/java/ani/dantotsu/others/AndroidBug5497Workaround.kt
@@ -0,0 +1,53 @@
+package ani.dantotsu.others
+
+import android.app.Activity
+import android.graphics.Rect
+import android.view.View
+import android.widget.FrameLayout
+
+class AndroidBug5497Workaround private constructor(activity: Activity, private val callback: (Boolean) -> Unit) {
+ private val mChildOfContent: View
+ private var usableHeightPrevious = 0
+ private val frameLayoutParams: FrameLayout.LayoutParams
+
+ init {
+ val content = activity.findViewById(android.R.id.content) as FrameLayout
+ mChildOfContent = content.getChildAt(0)
+ mChildOfContent.viewTreeObserver.addOnGlobalLayoutListener { possiblyResizeChildOfContent() }
+ frameLayoutParams = mChildOfContent.layoutParams as FrameLayout.LayoutParams
+ }
+
+ private fun possiblyResizeChildOfContent() {
+ val usableHeightNow = computeUsableHeight()
+ if (usableHeightNow != usableHeightPrevious) {
+ val usableHeightSansKeyboard = mChildOfContent.rootView.height
+ val heightDifference = usableHeightSansKeyboard - usableHeightNow
+ if (heightDifference > usableHeightSansKeyboard / 4) {
+ // keyboard probably just became visible
+ callback.invoke(true)
+ frameLayoutParams.height = usableHeightSansKeyboard - heightDifference
+ } else {
+ // keyboard probably just became hidden
+ callback.invoke(false)
+ frameLayoutParams.height = usableHeightSansKeyboard
+ }
+ mChildOfContent.requestLayout()
+ usableHeightPrevious = usableHeightNow
+ }
+ }
+
+ private fun computeUsableHeight(): Int {
+ val r = Rect()
+ mChildOfContent.getWindowVisibleDisplayFrame(r)
+ return r.bottom
+ }
+
+ companion object {
+ // For more information, see https://issuetracker.google.com/issues/36911528
+ // To use this class, simply invoke assistActivity() on an Activity that already has its content view set.
+ fun assistActivity(activity: Activity, callback: (Boolean) -> Unit) {
+ AndroidBug5497Workaround(activity, callback)
+ }
+ }
+}
+
diff --git a/app/src/main/java/ani/dantotsu/settings/ExtensionsActivity.kt b/app/src/main/java/ani/dantotsu/settings/ExtensionsActivity.kt
index 5300bbcd..a97a644d 100644
--- a/app/src/main/java/ani/dantotsu/settings/ExtensionsActivity.kt
+++ b/app/src/main/java/ani/dantotsu/settings/ExtensionsActivity.kt
@@ -9,6 +9,7 @@ import android.text.Editable
import android.text.TextWatcher
import android.view.View
import android.view.ViewGroup
+import android.view.WindowManager
import android.widget.AutoCompleteTextView
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.updateLayoutParams
@@ -17,6 +18,7 @@ import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2
import ani.dantotsu.*
import ani.dantotsu.databinding.ActivityExtensionsBinding
+import ani.dantotsu.others.AndroidBug5497Workaround
import ani.dantotsu.others.LanguageMapper
import ani.dantotsu.settings.saving.PrefManager
import ani.dantotsu.settings.saving.PrefName
@@ -34,7 +36,22 @@ class ExtensionsActivity : AppCompatActivity() {
ThemeManager(this).applyTheme()
binding = ActivityExtensionsBinding.inflate(layoutInflater)
setContentView(binding.root)
+ initActivity(this)
+ AndroidBug5497Workaround.assistActivity(this) {
+ if (it) {
+ binding.searchView.updateLayoutParams {
+ bottomMargin = statusBarHeight
+ }
+ } else {
+ binding.searchView.updateLayoutParams {
+ bottomMargin = statusBarHeight + navBarHeight
+ }
+ }
+ }
+ binding.searchView.updateLayoutParams {
+ bottomMargin = statusBarHeight + navBarHeight
+ }
val tabLayout = findViewById(R.id.tabLayout)
val viewPager = findViewById(R.id.viewPager)
diff --git a/app/src/main/res/layout-land/activity_media.xml b/app/src/main/res/layout-land/activity_media.xml
index 4c7dd397..0d77a555 100644
--- a/app/src/main/res/layout-land/activity_media.xml
+++ b/app/src/main/res/layout-land/activity_media.xml
@@ -6,20 +6,73 @@
android:layout_height="match_parent"
android:orientation="horizontal">
-
+ android:layout_gravity="center|bottom"
+ android:orientation="vertical">
+
+
+
+
+
+
+
@@ -235,24 +236,77 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:nestedScrollingEnabled="true"
+ android:layout_marginBottom="72dp"
tools:ignore="SpeakableTextPresentCheck" />
-
+
+
+ app:itemTextColor="@color/tab_layout_icon" />
+
+
+
+
+
+ android:visibility="gone"/>
diff --git a/app/src/main/res/layout/fragment_comments.xml b/app/src/main/res/layout/fragment_comments.xml
index 1194b907..c1ec5479 100644
--- a/app/src/main/res/layout/fragment_comments.xml
+++ b/app/src/main/res/layout/fragment_comments.xml
@@ -12,7 +12,7 @@
android:id="@+id/commentsRefresh"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_marginTop="58dp"
+ android:layout_marginBottom="58dp"
android:clipChildren="false"
android:clipToPadding="false">
@@ -83,67 +83,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/item_comments.xml b/app/src/main/res/layout/item_comments.xml
index 0fc4409b..f5a60d98 100644
--- a/app/src/main/res/layout/item_comments.xml
+++ b/app/src/main/res/layout/item_comments.xml
@@ -5,6 +5,8 @@
android:id="@+id/commentsCardView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:layout_marginEnd="8dp"
+ android:layout_marginStart="8dp"
android:layout_marginBottom="6dp">
@@ -119,20 +121,6 @@
android:textSize="12sp"
tools:ignore="HardcodedText,RtlSymmetry" />
-
-
-
+