From afc6f48854e4e191cecc32adb14d5bf86d6b5cec Mon Sep 17 00:00:00 2001 From: Cristian Monforte Date: Sat, 15 Feb 2020 16:25:18 +0100 Subject: [PATCH 1/9] Theming new values to be used in dax dialog secondary button --- app/src/main/res/values/attrs.xml | 2 ++ app/src/main/res/values/themes.xml | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index 017257dae5fb..9f722dad52c5 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -49,5 +49,7 @@ + + diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index e17fb5f48918..801fc8f7c6d7 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -61,6 +61,8 @@ @color/white @color/grayishThree @color/charcoalGrey + @color/white + @color/white @color/grayish @color/almostBlack @@ -119,6 +121,8 @@ @color/almostBlack @color/brownishGrayTwo @color/white + @color/grayishBrown + @color/subtleGrayTwo @color/warmerGray @color/whiteFive From 927d3459385e4f8224de24bf4d1856b5d8ef021b Mon Sep 17 00:00:00 2001 From: Cristian Monforte Date: Sat, 15 Feb 2020 16:26:37 +0100 Subject: [PATCH 2/9] Daxdialog layout changes to simplify required design. Removing one layer of ConstraintLayout for one LinearLayout to simplify working with margins between buttons. --- .../main/res/layout/content_dax_dialog.xml | 86 ++++++++++--------- 1 file changed, 44 insertions(+), 42 deletions(-) diff --git a/app/src/main/res/layout/content_dax_dialog.xml b/app/src/main/res/layout/content_dax_dialog.xml index d8ba15bf902a..30d372a7cf58 100644 --- a/app/src/main/res/layout/content_dax_dialog.xml +++ b/app/src/main/res/layout/content_dax_dialog.xml @@ -74,7 +74,7 @@ - + android:orientation="vertical"> - + + + - + + + app:cornerRadius="20dp" /> - + + From 704af49279c3fca5810eb4b71973ab37164759ed Mon Sep 17 00:00:00 2001 From: Cristian Monforte Date: Sat, 15 Feb 2020 16:37:46 +0100 Subject: [PATCH 3/9] Send pixels when secondary button is clicked using secondaryPixelName from SecondaryButtonCta --- .../java/com/duckduckgo/app/cta/ui/CtaViewModelTest.kt | 8 ++++++++ app/src/main/java/com/duckduckgo/app/cta/ui/Cta.kt | 6 ++++++ .../main/java/com/duckduckgo/app/cta/ui/CtaViewModel.kt | 6 ++++++ 3 files changed, 20 insertions(+) diff --git a/app/src/androidTest/java/com/duckduckgo/app/cta/ui/CtaViewModelTest.kt b/app/src/androidTest/java/com/duckduckgo/app/cta/ui/CtaViewModelTest.kt index 70db0f0ac6a8..a9fc912d8559 100644 --- a/app/src/androidTest/java/com/duckduckgo/app/cta/ui/CtaViewModelTest.kt +++ b/app/src/androidTest/java/com/duckduckgo/app/cta/ui/CtaViewModelTest.kt @@ -173,6 +173,14 @@ class CtaViewModelTest { verify(mockPixel).fire(eq(SURVEY_CTA_LAUNCHED), any()) } + @Test + fun whenCtaSecondaryButonClickedPixelIsFired() { + val secondaryButtonCta = mock() + whenever(secondaryButtonCta.secondaryButtonPixel).thenReturn(ONBOARDING_DAX_ALL_CTA_HIDDEN) + testee.onUserClickCtaSecondaryButton(secondaryButtonCta) + verify(mockPixel).fire(eq(ONBOARDING_DAX_ALL_CTA_HIDDEN), any()) + } + @Test fun whenCtaDismissedPixelIsFired() { testee.onUserDismissedCta(HomePanelCta.Survey(Survey("abc", "http://example.com", 1, SCHEDULED))) diff --git a/app/src/main/java/com/duckduckgo/app/cta/ui/Cta.kt b/app/src/main/java/com/duckduckgo/app/cta/ui/Cta.kt index 24beca873e7f..55fb25c140da 100644 --- a/app/src/main/java/com/duckduckgo/app/cta/ui/Cta.kt +++ b/app/src/main/java/com/duckduckgo/app/cta/ui/Cta.kt @@ -71,6 +71,12 @@ interface Cta { fun pixelOkParameters(): Map } +interface SecondaryButtonCta { + val secondaryButtonPixel: Pixel.PixelName? + + fun pixelSecondaryButtonParameters(): Map +} + sealed class DaxDialogCta( override val ctaId: CtaId, @AnyRes open val description: Int, diff --git a/app/src/main/java/com/duckduckgo/app/cta/ui/CtaViewModel.kt b/app/src/main/java/com/duckduckgo/app/cta/ui/CtaViewModel.kt index 0191c42cc414..911a1eca29ea 100644 --- a/app/src/main/java/com/duckduckgo/app/cta/ui/CtaViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/cta/ui/CtaViewModel.kt @@ -111,6 +111,12 @@ class CtaViewModel @Inject constructor( } } + fun onUserClickCtaSecondaryButton(cta: SecondaryButtonCta) { + cta.secondaryButtonPixel?.let { + pixel.fire(it, cta.pixelSecondaryButtonParameters()) + } + } + suspend fun refreshCta(dispatcher: CoroutineContext, isBrowserShowing: Boolean, site: Site? = null): Cta? { surveyCta()?.let { return it From d9d5b3d1b3da6061d2a5bf483bf285f3dd8be08d Mon Sep 17 00:00:00 2001 From: Cristian Monforte Date: Sat, 15 Feb 2020 16:41:57 +0100 Subject: [PATCH 4/9] When user clicks on secondary button, notify CtaViewModel --- .../java/com/duckduckgo/app/browser/BrowserTabViewModel.kt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt b/app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt index defa29874ced..a6acce4cf495 100644 --- a/app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/browser/BrowserTabViewModel.kt @@ -55,6 +55,7 @@ import com.duckduckgo.app.browser.ui.HttpAuthenticationDialogFragment.HttpAuthen import com.duckduckgo.app.cta.ui.Cta import com.duckduckgo.app.cta.ui.HomePanelCta import com.duckduckgo.app.cta.ui.CtaViewModel +import com.duckduckgo.app.cta.ui.SecondaryButtonCta import com.duckduckgo.app.global.* import com.duckduckgo.app.global.model.Site import com.duckduckgo.app.global.model.SiteFactory @@ -903,6 +904,10 @@ class BrowserTabViewModel( } } + fun onUserClickCtaSecondaryButton(cta: SecondaryButtonCta) { + ctaViewModel.onUserClickCtaSecondaryButton(cta) + } + fun onUserDismissedCta() { val cta = ctaViewState.value?.cta ?: return From b847031921bd0785ffb8e323674b4e6f7eb125c5 Mon Sep 17 00:00:00 2001 From: Cristian Monforte Date: Sat, 15 Feb 2020 16:44:35 +0100 Subject: [PATCH 5/9] * Detach highlighting logic from normal DaxDialogs. * Introduce new logic to show/hide a secondaryButton on DaxDialogs. * Change DaxDialog creation logic inside Cta. * Adapt BrowserTabFragment listener logic to new chanes. --- .../app/browser/BrowserTabFragment.kt | 20 +++- .../java/com/duckduckgo/app/cta/ui/Cta.kt | 26 +++-- .../duckduckgo/app/global/view/DaxDialog.kt | 104 ++++++++++++------ 3 files changed, 103 insertions(+), 47 deletions(-) diff --git a/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt b/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt index bf2c102402f8..4e56d784f7f1 100644 --- a/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt +++ b/app/src/main/java/com/duckduckgo/app/browser/BrowserTabFragment.kt @@ -49,6 +49,7 @@ import androidx.core.view.isEmpty import androidx.core.view.isNotEmpty import androidx.core.view.isVisible import androidx.core.view.postDelayed +import androidx.fragment.app.DialogFragment import androidx.fragment.app.Fragment import androidx.lifecycle.* import androidx.recyclerview.widget.LinearLayoutManager @@ -76,6 +77,7 @@ import com.duckduckgo.app.cta.ui.HomePanelCta import com.duckduckgo.app.cta.ui.CtaViewModel import com.duckduckgo.app.cta.ui.DaxBubbleCta import com.duckduckgo.app.cta.ui.DaxDialogCta +import com.duckduckgo.app.cta.ui.SecondaryButtonCta import com.duckduckgo.app.global.ViewModelFactory import com.duckduckgo.app.global.device.DeviceInfo import com.duckduckgo.app.global.view.* @@ -235,7 +237,7 @@ class BrowserTabFragment : Fragment(), FindListener, CoroutineScope { private val logoHidingListener by lazy { LogoHidingLayoutChangeLifecycleListener(ddgLogo) } private var alertDialog: AlertDialog? = null - private var daxDialog: DaxDialog? = null + private var daxDialog: DialogFragment? = null override fun onAttach(context: Context) { AndroidSupportInjection.inject(this) @@ -1388,7 +1390,7 @@ class BrowserTabFragment : Fragment(), FindListener, CoroutineScope { daxDialog?.dismiss() daxDialog = configuration.createCta(activity).apply { setHideClickListener { - dismiss() + getDaxDialog().dismiss() launchHideTipsDialog(activity, configuration) } setDismissListener { @@ -1402,16 +1404,22 @@ class BrowserTabFragment : Fragment(), FindListener, CoroutineScope { if (configuration is DaxDialogCta.DaxMainNetworkCta) { setPrimaryCtaClickListener { viewModel.onUserClickCtaOkButton() - dismiss() + getDaxDialog().dismiss() } configuration.setSecondDialog(this, activity) viewModel.onManualCtaShown(configuration) } else { - dismiss() + getDaxDialog().dismiss() } } - show(activity.supportFragmentManager, DAX_DIALOG_DIALOG_TAG) - } + if (configuration is SecondaryButtonCta) { + setSecondaryCtaClickListener { + viewModel.onUserClickCtaSecondaryButton(configuration) + getDaxDialog().dismiss() + } + } + getDaxDialog().show(activity.supportFragmentManager, DAX_DIALOG_DIALOG_TAG) + }.getDaxDialog() } } diff --git a/app/src/main/java/com/duckduckgo/app/cta/ui/Cta.kt b/app/src/main/java/com/duckduckgo/app/cta/ui/Cta.kt index 55fb25c140da..0b569d965d0f 100644 --- a/app/src/main/java/com/duckduckgo/app/cta/ui/Cta.kt +++ b/app/src/main/java/com/duckduckgo/app/cta/ui/Cta.kt @@ -30,6 +30,8 @@ import com.duckduckgo.app.global.baseHost import com.duckduckgo.app.global.install.AppInstallStore import com.duckduckgo.app.global.install.daysInstalled import com.duckduckgo.app.global.view.DaxDialog +import com.duckduckgo.app.global.view.DaxDialogHighlightView +import com.duckduckgo.app.global.view.TypewriterDaxDialog import com.duckduckgo.app.global.view.hide import com.duckduckgo.app.global.view.html import com.duckduckgo.app.global.view.show @@ -38,9 +40,7 @@ import com.duckduckgo.app.statistics.pixels.Pixel import com.duckduckgo.app.trackerdetection.model.TrackingEvent import kotlinx.android.synthetic.main.include_cta_buttons.view.* import kotlinx.android.synthetic.main.include_cta_content.view.* -import kotlinx.android.synthetic.main.include_dax_dialog_cta.view.dialogTextCta -import kotlinx.android.synthetic.main.include_dax_dialog_cta.view.hiddenTextCta -import kotlinx.android.synthetic.main.include_dax_dialog_cta.view.primaryCta +import kotlinx.android.synthetic.main.include_dax_dialog_cta.view.* interface DialogCta { fun createCta(activity: FragmentActivity): DaxDialog @@ -89,7 +89,7 @@ sealed class DaxDialogCta( override val appInstallStore: AppInstallStore ) : Cta, DialogCta, DaxCta { - override fun createCta(activity: FragmentActivity) = DaxDialog(getDaxText(activity), activity.resources.getString(okButton)) + override fun createCta(activity: FragmentActivity): DaxDialog = TypewriterDaxDialog(getDaxText(activity), activity.resources.getString(okButton)) override fun pixelCancelParameters(): Map = mapOf(Pixel.PixelParameter.CTA_SHOWN to ctaPixelParam) @@ -129,7 +129,7 @@ sealed class DaxDialogCta( ) { override fun createCta(activity: FragmentActivity): DaxDialog = - DaxDialog(getDaxText(activity), activity.resources.getString(okButton), false) + TypewriterDaxDialog(daxText = getDaxText(activity), primaryButtonText = activity.resources.getString(okButton), toolbarDimmed = false) override fun getDaxText(context: Context): String { val trackersFiltered = trackers.asSequence() @@ -178,7 +178,9 @@ sealed class DaxDialogCta( } override fun createCta(activity: FragmentActivity): DaxDialog { - return DaxDialog(getDaxText(activity), activity.resources.getString(okButton)).apply { + return DaxDialogHighlightView( + TypewriterDaxDialog(daxText = getDaxText(activity), primaryButtonText = activity.resources.getString(okButton)) + ).apply { val privacyGradeButton = activity.findViewById(R.id.privacyGradeButton) onAnimationFinishedListener { if (isFromSameNetworkDomain()) { @@ -190,8 +192,8 @@ sealed class DaxDialogCta( fun setSecondDialog(dialog: DaxDialog, activity: FragmentActivity) { ctaPixelParam = Pixel.PixelValues.DAX_NETWORK_CTA_2 - dialog.daxText = activity.resources.getString(R.string.daxMainNetworkStep2CtaText, firstParagraph(activity), network) - dialog.buttonText = activity.resources.getString(R.string.daxDialogGotIt) + dialog.setDaxText(activity.resources.getString(R.string.daxMainNetworkStep2CtaText, firstParagraph(activity), network)) + dialog.setButtonText(activity.resources.getString(R.string.daxDialogGotIt)) dialog.onAnimationFinishedListener { } dialog.setDialogAndStartAnimation() } @@ -217,9 +219,13 @@ sealed class DaxDialogCta( onboardingStore, appInstallStore ) { - override fun createCta(activity: FragmentActivity): DaxDialog { - return DaxDialog(getDaxText(activity), activity.resources.getString(okButton)).apply { + return DaxDialogHighlightView( + TypewriterDaxDialog( + daxText = getDaxText(activity), + primaryButtonText = activity.resources.getString(okButton) + ) + ).apply { val fireButton = activity.findViewById(R.id.fire) onAnimationFinishedListener { startHighlightViewAnimation(fireButton) diff --git a/app/src/main/java/com/duckduckgo/app/global/view/DaxDialog.kt b/app/src/main/java/com/duckduckgo/app/global/view/DaxDialog.kt index 2df766e4b166..24e45e5c3871 100644 --- a/app/src/main/java/com/duckduckgo/app/global/view/DaxDialog.kt +++ b/app/src/main/java/com/duckduckgo/app/global/view/DaxDialog.kt @@ -22,30 +22,44 @@ import android.graphics.Color import android.graphics.Rect import android.graphics.drawable.ColorDrawable import android.os.Bundle +import android.view.Gravity import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.fragment.app.DialogFragment -import com.duckduckgo.app.browser.R -import android.view.Gravity -import kotlinx.android.synthetic.main.content_dax_dialog.* import android.view.animation.Animation import android.view.animation.OvershootInterpolator import android.view.animation.ScaleAnimation import android.widget.ImageView import android.widget.RelativeLayout import androidx.core.content.ContextCompat.getColor +import androidx.fragment.app.DialogFragment +import com.duckduckgo.app.browser.R +import kotlinx.android.synthetic.main.content_dax_dialog.* -class DaxDialog( - var daxText: String, - var buttonText: String, +interface DaxDialog { + fun setDaxText(daxText: String) + fun setButtonText(buttonText: String) + fun setDialogAndStartAnimation() + fun onAnimationFinishedListener(onAnimationFinished: () -> Unit) + fun setPrimaryCtaClickListener(clickListener: () -> Unit) + fun setSecondaryCtaClickListener(clickListener: () -> Unit) + fun setHideClickListener(clickListener: () -> Unit) + fun setDismissListener(clickListener: () -> Unit) + fun getDaxDialog(): DialogFragment +} + +class TypewriterDaxDialog( + private var daxText: String, + private var primaryButtonText: String, + private var secondaryButtonText: String? = "", private val toolbarDimmed: Boolean = true, private val dismissible: Boolean = true, private val typingDelayInMs: Long = 20 -) : DialogFragment() { +) : DialogFragment(), DaxDialog { private var onAnimationFinished: () -> Unit = {} private var primaryCtaClickListener: () -> Unit = { dismiss() } + private var secondaryCtaClickListener: (() -> Unit)? = null private var hideClickListener: () -> Unit = { dismiss() } private var dismissListener: () -> Unit = { } @@ -82,40 +96,40 @@ class DaxDialog( super.onDismiss(dialog) } - fun setDialogAndStartAnimation() { + override fun getDaxDialog(): DialogFragment = this + + override fun setDaxText(daxText: String) { + this.daxText = daxText + } + + override fun setButtonText(buttonText: String) { + this.primaryButtonText = buttonText + } + + override fun setDialogAndStartAnimation() { setDialog() setListeners() dialogText.startTypingAnimation(daxText, true, onAnimationFinished) } - fun onAnimationFinishedListener(onAnimationFinished: () -> Unit) { + override fun onAnimationFinishedListener(onAnimationFinished: () -> Unit) { this.onAnimationFinished = onAnimationFinished } - fun setPrimaryCtaClickListener(clickListener: () -> Unit) { + override fun setPrimaryCtaClickListener(clickListener: () -> Unit) { primaryCtaClickListener = clickListener } - fun setHideClickListener(clickListener: () -> Unit) { - hideClickListener = clickListener - } - - fun setDismissListener(clickListener: () -> Unit) { - dismissListener = clickListener + override fun setSecondaryCtaClickListener(clickListener: () -> Unit) { + secondaryCtaClickListener = clickListener } - fun startHighlightViewAnimation(targetView: View, duration: Long = 400, timesBigger: Float = 0f) { - val highlightImageView = addHighlightView(targetView, timesBigger) - val scaleAnimation = buildScaleAnimation(duration) - highlightImageView?.startAnimation(scaleAnimation) + override fun setHideClickListener(clickListener: () -> Unit) { + hideClickListener = clickListener } - private fun buildScaleAnimation(duration: Long = 400): Animation { - val scaleAnimation = ScaleAnimation(0f, 1f, 0f, 1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f) - scaleAnimation.duration = duration - scaleAnimation.fillAfter = true - scaleAnimation.interpolator = OvershootInterpolator(OVERSHOOT_TENSION) - return scaleAnimation + override fun setDismissListener(clickListener: () -> Unit) { + dismissListener = clickListener } private fun setListeners() { @@ -129,6 +143,13 @@ class DaxDialog( primaryCtaClickListener() } + secondaryCtaClickListener?.let { + secondaryCta.setOnClickListener { + dialogText.cancelAnimation() + it() + } + } + if (dismissible) { dialogContainer.setOnClickListener { dialogText.cancelAnimation() @@ -147,14 +168,35 @@ class DaxDialog( val toolbarColor = if (toolbarDimmed) getColor(it, R.color.dimmed) else getColor(it, android.R.color.transparent) toolbarDialogLayout.setBackgroundColor(toolbarColor) hiddenText.text = daxText.html(it) - primaryCta.text = buttonText + primaryCta.text = primaryButtonText + secondaryCta.text = secondaryButtonText + secondaryCta.visibility = if (secondaryButtonText.isNullOrEmpty()) View.GONE else View.VISIBLE dialogText.typingDelayInMs = typingDelayInMs } } +} + +class DaxDialogHighlightView( + daxDialog: TypewriterDaxDialog +) : DaxDialog by daxDialog { + + fun startHighlightViewAnimation(targetView: View, duration: Long = 400, timesBigger: Float = 0f) { + val highlightImageView = addHighlightView(targetView, timesBigger) + val scaleAnimation = buildScaleAnimation(duration) + highlightImageView?.startAnimation(scaleAnimation) + } + + private fun buildScaleAnimation(duration: Long = 400): Animation { + val scaleAnimation = ScaleAnimation(0f, 1f, 0f, 1f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f) + scaleAnimation.duration = duration + scaleAnimation.fillAfter = true + scaleAnimation.interpolator = OvershootInterpolator(OVERSHOOT_TENSION) + return scaleAnimation + } private fun addHighlightView(targetView: View, timesBigger: Float): View? { - return activity?.let { - val highlightImageView = ImageView(context) + return getDaxDialog().activity?.let { + val highlightImageView = ImageView(getDaxDialog().context) highlightImageView.id = View.generateViewId() highlightImageView.setImageResource(R.drawable.ic_circle) @@ -174,7 +216,7 @@ class DaxDialog( val params = RelativeLayout.LayoutParams((width + timesBiggerX).toInt(), (height + timesBiggerY).toInt()) params.leftMargin = locationOnScreen[0] - (timesBiggerX / 2).toInt() params.topMargin = (locationOnScreen[1] - statusBarHeight) - (timesBiggerY / 2).toInt() - dialogContainer.addView(highlightImageView, params) + getDaxDialog().dialogContainer.addView(highlightImageView, params) highlightImageView } } From 5227754ff2e9d6e6d28dc245e67f878e7242dccb Mon Sep 17 00:00:00 2001 From: Cristian Monforte Date: Sat, 15 Feb 2020 17:46:05 +0100 Subject: [PATCH 6/9] Avoid showing a dark statusbar when dialog is shown --- .../main/java/com/duckduckgo/app/global/view/DaxDialog.kt | 6 ++++-- app/src/main/res/values/themes.xml | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/duckduckgo/app/global/view/DaxDialog.kt b/app/src/main/java/com/duckduckgo/app/global/view/DaxDialog.kt index 24e45e5c3871..3a99557438ed 100644 --- a/app/src/main/java/com/duckduckgo/app/global/view/DaxDialog.kt +++ b/app/src/main/java/com/duckduckgo/app/global/view/DaxDialog.kt @@ -74,11 +74,13 @@ class TypewriterDaxDialog( attributes?.gravity = Gravity.BOTTOM window?.attributes = attributes window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) - setStyle(STYLE_NO_TITLE, android.R.style.Theme_DeviceDefault_Light_NoActionBar) - return dialog } + override fun getTheme(): Int { + return R.style.DaxDialogFragment + } + override fun onStart() { super.onStart() dialog?.window?.attributes?.dimAmount = 0f diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 801fc8f7c6d7..d66297468e36 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -169,4 +169,8 @@ ?attr/settingsSwitchBackgroundColor + + From afbcba292e6e94734865c2d4a3cff5fe5387e67e Mon Sep 17 00:00:00 2001 From: Cristian Monforte Date: Mon, 17 Feb 2020 10:22:31 +0100 Subject: [PATCH 7/9] Style created for each Dax dialog button. --- app/src/main/res/layout/content_dax_dialog.xml | 17 ++++------------- app/src/main/res/values/styles.xml | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/app/src/main/res/layout/content_dax_dialog.xml b/app/src/main/res/layout/content_dax_dialog.xml index 30d372a7cf58..87fe3f3fa25a 100644 --- a/app/src/main/res/layout/content_dax_dialog.xml +++ b/app/src/main/res/layout/content_dax_dialog.xml @@ -119,27 +119,18 @@ + android:layout_marginTop="10dp"/> + android:visibility="visible"/> diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 81f21c71b3ff..4981378d2fb7 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -325,5 +325,21 @@ 9dp + + + + + \ No newline at end of file From 2ee17bc434de661611beba8aa5454d224bc15a5c Mon Sep 17 00:00:00 2001 From: Cristian Monforte Date: Mon, 17 Feb 2020 10:23:21 +0100 Subject: [PATCH 8/9] Format file. --- app/src/main/res/layout/content_dax_dialog.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/layout/content_dax_dialog.xml b/app/src/main/res/layout/content_dax_dialog.xml index 87fe3f3fa25a..06b1b0efe6c4 100644 --- a/app/src/main/res/layout/content_dax_dialog.xml +++ b/app/src/main/res/layout/content_dax_dialog.xml @@ -122,7 +122,7 @@ style="@style/DaxDialogButton.Primary" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="10dp"/> + android:layout_marginTop="10dp" /> + android:visibility="visible" /> From 4c5a1bc6416cd0aa74c9f8608d013147f1aa72e9 Mon Sep 17 00:00:00 2001 From: Cristian Monforte Date: Mon, 17 Feb 2020 16:23:55 +0100 Subject: [PATCH 9/9] fix: statusbar showing random color in high api devices --- app/src/main/res/layout/content_dax_dialog.xml | 3 ++- app/src/main/res/values/themes.xml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/src/main/res/layout/content_dax_dialog.xml b/app/src/main/res/layout/content_dax_dialog.xml index 06b1b0efe6c4..25fa94e12b6a 100644 --- a/app/src/main/res/layout/content_dax_dialog.xml +++ b/app/src/main/res/layout/content_dax_dialog.xml @@ -18,7 +18,8 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/dialogContainer" android:layout_width="match_parent" - android:layout_height="match_parent"> + android:layout_height="match_parent" + android:fitsSystemWindows="true">