From 1a857f4e95ebca4fa781a5b2dd5ce4999ff2f740 Mon Sep 17 00:00:00 2001 From: Deep Date: Thu, 10 Jun 2021 19:58:31 -0400 Subject: [PATCH] Update UI based on feedback Add native functions --- .../chrome/browser/app/BraveActivity.java | 2 - .../BraveWalletNativeWorker.java | 21 +- .../crypto_wallet/CryptoWalletActivity.java | 14 + .../adapters/RecoveryPhraseAdapter.java | 2 +- .../fragments/CryptoFragment.java | 33 ++- .../RecoveryPhraseFragment.java | 18 +- .../RestoreWalletFragment.java | 15 +- .../SecurePasswordFragment.java | 25 +- .../UnlockWalletFragment.java | 10 +- .../VerifyRecoveryPhraseFragment.java | 10 +- .../browser/crypto_wallet/util/Utils.java | 20 +- .../res/layout/fragment_backup_wallet.xml | 4 +- android/java/res/layout/fragment_cards.xml | 10 +- .../java/res/layout/fragment_crypto_child.xml | 1 + .../fragment_crypto_wallet_onboarding.xml | 42 +-- .../res/layout/fragment_recovery_phrase.xml | 4 +- .../res/layout/fragment_restore_wallet.xml | 262 +++++++++--------- .../res/layout/fragment_secure_password.xml | 197 +++++++------ .../java/res/layout/fragment_setup_wallet.xml | 134 ++++----- .../res/layout/fragment_unlock_wallet.xml | 171 ++++++------ .../android/brave_wallet_native_worker.cc | 17 ++ .../android/brave_wallet_native_worker.h | 2 + .../android/strings/android_brave_strings.grd | 3 +- 23 files changed, 587 insertions(+), 430 deletions(-) diff --git a/android/java/org/chromium/chrome/browser/app/BraveActivity.java b/android/java/org/chromium/chrome/browser/app/BraveActivity.java index 59829065c92..57f429bfc22 100644 --- a/android/java/org/chromium/chrome/browser/app/BraveActivity.java +++ b/android/java/org/chromium/chrome/browser/app/BraveActivity.java @@ -97,7 +97,6 @@ import org.chromium.chrome.browser.toolbar.top.BraveToolbarLayout; import org.chromium.chrome.browser.util.BraveDbUtil; import org.chromium.chrome.browser.util.BraveReferrer; import org.chromium.chrome.browser.util.PackageUtils; -// import org.chromium.chrome.browser.crypto_wallet.BraveWalletNativeWorker; import org.chromium.chrome.browser.widget.crypto.binance.BinanceAccountBalance; import org.chromium.chrome.browser.widget.crypto.binance.BinanceWidgetManager; import org.chromium.components.bookmarks.BookmarkId; @@ -413,7 +412,6 @@ public abstract class BraveActivity calender.getTimeInMillis()); } checkSetDefaultBrowserModal(); - // BraveWalletNativeWorker.getInstance().createWallet("qwerty"); } private void openBraveWallet() { diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/BraveWalletNativeWorker.java b/android/java/org/chromium/chrome/browser/crypto_wallet/BraveWalletNativeWorker.java index 3f23d2299ba..bb9af7e1871 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/BraveWalletNativeWorker.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/BraveWalletNativeWorker.java @@ -8,6 +8,7 @@ package org.chromium.chrome.browser.crypto_wallet; import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.NativeMethods; +import org.chromium.base.Log; @JNINamespace("chrome::android") public class BraveWalletNativeWorker { @@ -19,7 +20,7 @@ public class BraveWalletNativeWorker { synchronized (lock) { if (instance == null) { instance = new BraveWalletNativeWorker(); - instance.Init(); + instance.init(); } } return instance; @@ -27,7 +28,7 @@ public class BraveWalletNativeWorker { private BraveWalletNativeWorker() {} - private void Init() { + private void init() { if (mNativeBraveWalletNativeWorker == 0) { BraveWalletNativeWorkerJni.get().init(this); } @@ -35,10 +36,10 @@ public class BraveWalletNativeWorker { @Override protected void finalize() { - Destroy(); + destroy(); } - private void Destroy() { + private void destroy() { if (mNativeBraveWalletNativeWorker != 0) { BraveWalletNativeWorkerJni.get().destroy(mNativeBraveWalletNativeWorker, this); mNativeBraveWalletNativeWorker = 0; @@ -51,16 +52,21 @@ public class BraveWalletNativeWorker { mNativeBraveWalletNativeWorker = nativePtr; } - public String CreateWallet(String password) { + public String createWallet(String password) { return BraveWalletNativeWorkerJni.get().createWallet( mNativeBraveWalletNativeWorker, password); } - public void LockWallet() { + public boolean isWalletLocked() { + Log.e("NTP", "isWalletLocked : "+BraveWalletNativeWorkerJni.get().isWalletLocked(mNativeBraveWalletNativeWorker)); + return BraveWalletNativeWorkerJni.get().isWalletLocked(mNativeBraveWalletNativeWorker); + } + + public void lockWallet() { BraveWalletNativeWorkerJni.get().lockWallet(mNativeBraveWalletNativeWorker); } - public boolean UnlockWallet(String password) { + public boolean unlockWallet(String password) { return BraveWalletNativeWorkerJni.get().unlockWallet( mNativeBraveWalletNativeWorker, password); } @@ -70,6 +76,7 @@ public class BraveWalletNativeWorker { void init(BraveWalletNativeWorker caller); void destroy(long nativeBraveWalletNativeWorker, BraveWalletNativeWorker caller); String createWallet(long nativeBraveWalletNativeWorker, String password); + boolean isWalletLocked(long nativeBraveWalletNativeWorker); void lockWallet(long nativeBraveWalletNativeWorker); boolean unlockWallet(long nativeBraveWalletNativeWorker, String password); } diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/CryptoWalletActivity.java b/android/java/org/chromium/chrome/browser/crypto_wallet/CryptoWalletActivity.java index 3e74929fb18..0b133ebaf67 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/CryptoWalletActivity.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/CryptoWalletActivity.java @@ -29,6 +29,8 @@ import org.chromium.chrome.browser.crypto_wallet.fragments.RewardsFragment; import org.chromium.chrome.browser.crypto_wallet.fragments.SwapBottomSheetDialogFragment; import org.chromium.chrome.browser.crypto_wallet.listeners.OnFinishOnboarding; import org.chromium.chrome.browser.crypto_wallet.util.NavigationItem; +import org.chromium.chrome.browser.crypto_wallet.BraveWalletNativeWorker; +import org.chromium.base.Log; import java.util.ArrayList; import java.util.List; @@ -107,6 +109,18 @@ public class CryptoWalletActivity extends AppCompatActivity { setNavigationFragments(); } + @Override + protected void onPause() { + super.onPause(); + BraveWalletNativeWorker.getInstance().lockWallet(); + } + + @Override + protected void onResume() { + super.onResume(); + Log.e("NTP", "OnResume"); + } + private void setNavigationFragments() { List navigationItems = new ArrayList<>(); int navigationMenu; diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/adapters/RecoveryPhraseAdapter.java b/android/java/org/chromium/chrome/browser/crypto_wallet/adapters/RecoveryPhraseAdapter.java index 3a57bb74cad..08b8d1ae460 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/adapters/RecoveryPhraseAdapter.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/adapters/RecoveryPhraseAdapter.java @@ -43,7 +43,7 @@ public class RecoveryPhraseAdapter extends RecyclerView.Adapter { selectedRecoveryPhraseMap.put(position, recoveryPhrase); diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/CryptoFragment.java b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/CryptoFragment.java index f2cebae7e22..a31f0a60ecf 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/CryptoFragment.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/CryptoFragment.java @@ -36,6 +36,7 @@ import org.chromium.chrome.browser.crypto_wallet.fragments.onboarding_fragments. import org.chromium.chrome.browser.crypto_wallet.fragments.onboarding_fragments.VerifyRecoveryPhraseFragment; import org.chromium.chrome.browser.crypto_wallet.listeners.OnFinishOnboarding; import org.chromium.chrome.browser.crypto_wallet.listeners.OnNextPage; +import org.chromium.chrome.browser.crypto_wallet.BraveWalletNativeWorker; import org.chromium.chrome.browser.crypto_wallet.util.NavigationItem; import java.util.ArrayList; @@ -88,15 +89,39 @@ public class CryptoFragment extends Fragment { cryptoWalletOnboardingViewPager.setOffscreenPageLimit( cryptoWalletOnboardingPagerAdapter.getCount() - 1); - setNavigationFragments(ONBOARDING_ACTION); - ImageView onboardingBackButton = view.findViewById(R.id.onboarding_back_button); + onboardingBackButton.setVisibility(View.GONE); onboardingBackButton.setOnClickListener(v -> { if (cryptoWalletOnboardingViewPager != null) { - cryptoWalletOnboardingViewPager.setCurrentItem( - cryptoWalletOnboardingViewPager.getCurrentItem() - 1); + cryptoWalletOnboardingViewPager.setCurrentItem(cryptoWalletOnboardingViewPager.getCurrentItem() - 1); } }); + + cryptoWalletOnboardingViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { + @Override + public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { + + } + + @Override + public void onPageSelected(int position) { + if (position == 0 || position == 2) { + onboardingBackButton.setVisibility(View.GONE); + } else { + onboardingBackButton.setVisibility(View.VISIBLE); + } + } + + @Override + public void onPageScrollStateChanged(int state) { + + } + }); + // if (BraveWalletNativeWorker.getInstance().isWalletLocked()) { + // setNavigationFragments(UNLOCK_WALLET_ACTION); + // } else { + setNavigationFragments(ONBOARDING_ACTION); + // } } } diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/onboarding_fragments/RecoveryPhraseFragment.java b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/onboarding_fragments/RecoveryPhraseFragment.java index 1a1af6413d4..7c8d9da75b6 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/onboarding_fragments/RecoveryPhraseFragment.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/onboarding_fragments/RecoveryPhraseFragment.java @@ -25,11 +25,17 @@ import org.chromium.chrome.browser.crypto_wallet.util.Utils; import java.util.HashMap; import java.util.Map; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; public class RecoveryPhraseFragment extends CryptoOnboardingFragment { + + private List recoveryPhrases; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + recoveryPhrases = new ArrayList(Arrays.asList(Utils.recoveryPhrase.split(" "))); } @Override @@ -74,21 +80,13 @@ public class RecoveryPhraseFragment extends CryptoOnboardingFragment { recyclerView.setLayoutManager(layoutManager); RecoveryPhraseAdapter recoveryPhraseAdapter = new RecoveryPhraseAdapter(); - recoveryPhraseAdapter.setRecoveryPhraseMap(getRecoveryPhraseMap()); + recoveryPhraseAdapter.setRecoveryPhraseMap(Utils.getRecoveryPhraseMap(recoveryPhrases)); recyclerView.setAdapter(recoveryPhraseAdapter); } - private Map getRecoveryPhraseMap() { - Map recoveryPhraseMap = new HashMap<>(); - for (int i = 0; i < Utils.recoveryPhrases.size(); i++) { - recoveryPhraseMap.put(i, Utils.recoveryPhrases.get(i)); - } - return recoveryPhraseMap; - } - private String getRecoveryPhraseToCopy() { String recoveryPhrasesText = ""; - for (String phrase : Utils.recoveryPhrases) { + for (String phrase : recoveryPhrases) { recoveryPhrasesText = recoveryPhrasesText.concat(phrase).concat(" "); } return recoveryPhrasesText.trim(); diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/onboarding_fragments/RestoreWalletFragment.java b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/onboarding_fragments/RestoreWalletFragment.java index 06bfa2b18c2..4972dbd4967 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/onboarding_fragments/RestoreWalletFragment.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/onboarding_fragments/RestoreWalletFragment.java @@ -56,14 +56,13 @@ public class RestoreWalletFragment extends CryptoOnboardingFragment { Button secureCryptoButton = view.findViewById(R.id.btn_restore_wallet); secureCryptoButton.setOnClickListener(v -> { - if (TextUtils.isEmpty(passwordEdittext.getText()) - || passwordEdittext.getText().toString().length() < 7) { - passwordEdittext.setError(getResources().getString(R.string.password_error)); - } else if (TextUtils.isEmpty(retypePasswordEdittext.getText()) - || !passwordEdittext.getText().toString().equals( - retypePasswordEdittext.getText().toString())) { - retypePasswordEdittext.setError( - getResources().getString(R.string.retype_password_error)); + String passwordInput = passwordEdittext.getText().toString().trim(); + String retypePasswordInput = retypePasswordEdittext.getText().toString().trim(); + + if (passwordInput.isEmpty() || !Utils.PASSWORD_PATTERN.matcher(passwordInput).matches()) { + passwordEdittext.setError(getResources().getString(R.string.password_text)); + } else if (retypePasswordInput.isEmpty() || !passwordInput.equals(retypePasswordInput)) { + retypePasswordEdittext.setError(getResources().getString(R.string.retype_password_error)); } else { // Restore button } diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/onboarding_fragments/SecurePasswordFragment.java b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/onboarding_fragments/SecurePasswordFragment.java index 4ee156335ae..0fac596b902 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/onboarding_fragments/SecurePasswordFragment.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/onboarding_fragments/SecurePasswordFragment.java @@ -24,9 +24,14 @@ import androidx.core.content.ContextCompat; import org.chromium.chrome.R; +import org.chromium.chrome.browser.crypto_wallet.util.Utils; +import org.chromium.chrome.browser.crypto_wallet.BraveWalletNativeWorker; + import java.util.concurrent.Executor; public class SecurePasswordFragment extends CryptoOnboardingFragment { + private EditText passwordEdittext; + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -35,30 +40,29 @@ public class SecurePasswordFragment extends CryptoOnboardingFragment { @Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_secure_password, container, false); } @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); - EditText passwordEdittext = view.findViewById(R.id.secure_crypto_password); + passwordEdittext = view.findViewById(R.id.secure_crypto_password); EditText retypePasswordEdittext = view.findViewById(R.id.secure_crypto_retype_password); Button secureCryptoButton = view.findViewById(R.id.btn_secure_crypto_continue); secureCryptoButton.setOnClickListener(v -> { - if (TextUtils.isEmpty(passwordEdittext.getText()) - || passwordEdittext.getText().toString().length() < 7) { - passwordEdittext.setError(getResources().getString(R.string.password_error)); - } else if (TextUtils.isEmpty(retypePasswordEdittext.getText()) - || !passwordEdittext.getText().toString().equals( - retypePasswordEdittext.getText().toString())) { - retypePasswordEdittext.setError( - getResources().getString(R.string.retype_password_error)); + String passwordInput = passwordEdittext.getText().toString().trim(); + String retypePasswordInput = retypePasswordEdittext.getText().toString().trim(); + + if (passwordInput.isEmpty() || !Utils.PASSWORD_PATTERN.matcher(passwordInput).matches()) { + passwordEdittext.setError(getResources().getString(R.string.password_text)); + } else if (retypePasswordInput.isEmpty() || !passwordInput.equals(retypePasswordInput)) { + retypePasswordEdittext.setError(getResources().getString(R.string.retype_password_error)); } else { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { showFingerprintDialog(authenticationCallback); } else { + Utils.recoveryPhrase = BraveWalletNativeWorker.getInstance().createWallet(passwordInput).trim(); onNextPage.gotoNextPage(false); } } @@ -89,6 +93,7 @@ public class SecurePasswordFragment extends CryptoOnboardingFragment { public void onAuthenticationSucceeded(BiometricPrompt.AuthenticationResult result) { super.onAuthenticationSucceeded(result); // Go to next Page + Utils.recoveryPhrase = BraveWalletNativeWorker.getInstance().createWallet(passwordEdittext.getText().toString().trim()).trim(); onNextPage.gotoNextPage(false); } diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/onboarding_fragments/UnlockWalletFragment.java b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/onboarding_fragments/UnlockWalletFragment.java index f28420e6f2a..58d44ba50d5 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/onboarding_fragments/UnlockWalletFragment.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/onboarding_fragments/UnlockWalletFragment.java @@ -19,6 +19,8 @@ import androidx.annotation.Nullable; import org.chromium.chrome.R; +import org.chromium.chrome.browser.crypto_wallet.BraveWalletNativeWorker; + public class UnlockWalletFragment extends CryptoOnboardingFragment { @Override public void onCreate(Bundle savedInstanceState) { @@ -40,8 +42,14 @@ public class UnlockWalletFragment extends CryptoOnboardingFragment { unlockButton.setOnClickListener(v -> { if (TextUtils.isEmpty(unlockWalletPassword.getText())) { unlockWalletPassword.setError(getString(R.string.password_error)); + return; + } + + if (BraveWalletNativeWorker.getInstance().unlockWallet(unlockWalletPassword.getText().toString())) { + onNextPage.gotoNextPage(true); + } else { + unlockWalletPassword.setError(getString(R.string.password_error)); } - onNextPage.gotoNextPage(true); }); TextView unlockWalletRestoreButton = view.findViewById(R.id.btn_unlock_wallet_restore); diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/onboarding_fragments/VerifyRecoveryPhraseFragment.java b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/onboarding_fragments/VerifyRecoveryPhraseFragment.java index 70abf5f6217..6b00f2c1227 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/onboarding_fragments/VerifyRecoveryPhraseFragment.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/fragments/onboarding_fragments/VerifyRecoveryPhraseFragment.java @@ -24,12 +24,17 @@ import org.chromium.chrome.browser.crypto_wallet.fragments.AddAccountOnboardingD import org.chromium.chrome.browser.crypto_wallet.util.ItemOffsetDecoration; import org.chromium.chrome.browser.crypto_wallet.util.Utils; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + public class VerifyRecoveryPhraseFragment extends CryptoOnboardingFragment { private RecoveryPhraseAdapter recoveryPhraseAdapter; private RecyclerView phraseRecyclerView; private RecyclerView selectedPhraseRecyclerView; private RecoveryPhraseAdapter selectedRecoveryPhraseAdapter; private Button recoveryPhraseButton; + private List recoveryPhrases; public interface OnRecoveryPhraseSelected { void onSelectedRecoveryPhrase(); @@ -38,6 +43,7 @@ public class VerifyRecoveryPhraseFragment extends CryptoOnboardingFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + recoveryPhrases = new ArrayList(Arrays.asList(Utils.recoveryPhrase.split(" "))); } @Override @@ -71,7 +77,7 @@ public class VerifyRecoveryPhraseFragment extends CryptoOnboardingFragment { phraseRecyclerView.setLayoutManager(layoutManager); recoveryPhraseAdapter = new RecoveryPhraseAdapter(); - recoveryPhraseAdapter.setRecoveryPhraseMap(Utils.getRecoveryPhraseMap()); + recoveryPhraseAdapter.setRecoveryPhraseMap(Utils.getRecoveryPhraseMap(recoveryPhrases)); recoveryPhraseAdapter.setOnRecoveryPhraseSelectedListener(onRecoveryPhraseSelected); phraseRecyclerView.setAdapter(recoveryPhraseAdapter); } @@ -117,7 +123,7 @@ public class VerifyRecoveryPhraseFragment extends CryptoOnboardingFragment { if (recoveryPhraseAdapter != null && recoveryPhraseAdapter.getSelectedRecoveryPhraseMap().size() - == Utils.recoveryPhrases.size()) { + == recoveryPhrases.size()) { recoveryPhraseButton.setAlpha(1f); recoveryPhraseButton.setEnabled(true); } diff --git a/android/java/org/chromium/chrome/browser/crypto_wallet/util/Utils.java b/android/java/org/chromium/chrome/browser/crypto_wallet/util/Utils.java index ee151a97a79..db73390f858 100644 --- a/android/java/org/chromium/chrome/browser/crypto_wallet/util/Utils.java +++ b/android/java/org/chromium/chrome/browser/crypto_wallet/util/Utils.java @@ -16,17 +16,29 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.regex.Pattern; public class Utils { - public static final List recoveryPhrases = - new ArrayList<>(Arrays.asList("Tomato", "Green", "Velvet", "Span", "Celery", "Atoms", - "Parent", "Stop", "Bowl", "Wishful", "Stone", "Exercise")); + public static final Pattern PASSWORD_PATTERN = + Pattern.compile("^" + + "(?=.*[0-9])" + //at least 1 digit + "(?=.*[a-zA-Z])" + //any letter + "(?=.*[$&+,:;=?@#|'<>.^*()%!-])" + //at least 1 special character + "(?=\\S+$)" + //no white spaces + ".{7,}" + //at least 7 characters + "$"); + + // public static final List recoveryPhrases = + // new ArrayList<>(Arrays.asList("Tomato", "Green", "Velvet", "Span", "Celery", "Atoms", + // "Parent", "Stop", "Bowl", "Wishful", "Stone", "Exercise")); + + public static String recoveryPhrase = ""; public static int ONBOARDING_ACTION = 1; public static int UNLOCK_WALLET_ACTION = 2; public static int RESTORE_WALLET_ACTION = 3; - public static Map getRecoveryPhraseMap() { + public static Map getRecoveryPhraseMap(List recoveryPhrases) { Map recoveryPhraseMap = new HashMap<>(); for (int i = 0; i < recoveryPhrases.size(); i++) { recoveryPhraseMap.put(i, recoveryPhrases.get(i)); diff --git a/android/java/res/layout/fragment_backup_wallet.xml b/android/java/res/layout/fragment_backup_wallet.xml index f5e2fed3b52..baf6f3dacc4 100644 --- a/android/java/res/layout/fragment_backup_wallet.xml +++ b/android/java/res/layout/fragment_backup_wallet.xml @@ -1,5 +1,5 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/android/java/res/layout/fragment_cards.xml b/android/java/res/layout/fragment_cards.xml index 8177490162d..de2e3f8bd54 100644 --- a/android/java/res/layout/fragment_cards.xml +++ b/android/java/res/layout/fragment_cards.xml @@ -1,9 +1,12 @@ - + android:scrollbars="vertical" + android:fadeScrollbars="false" + android:background="@android:color/white" + android:fillViewport="true"> + diff --git a/android/java/res/layout/fragment_crypto_child.xml b/android/java/res/layout/fragment_crypto_child.xml index 33fcbb2fac2..3be2fd0c5f2 100644 --- a/android/java/res/layout/fragment_crypto_child.xml +++ b/android/java/res/layout/fragment_crypto_child.xml @@ -89,6 +89,7 @@ android:layout_height="wrap_content" android:background="@drawable/wallet_radio_button_selector" android:gravity="center" + android:padding="8dp" android:textColor="@color/crypto_wallet_radiobutton_color_selector" android:checked="true" android:button="@null" diff --git a/android/java/res/layout/fragment_crypto_wallet_onboarding.xml b/android/java/res/layout/fragment_crypto_wallet_onboarding.xml index 3bc36939513..1db69c24d56 100644 --- a/android/java/res/layout/fragment_crypto_wallet_onboarding.xml +++ b/android/java/res/layout/fragment_crypto_wallet_onboarding.xml @@ -1,24 +1,34 @@ - + android:scrollbars="vertical" + android:fadeScrollbars="false" + android:fillViewport="true"> - - - + android:orientation="vertical"> - \ No newline at end of file + + + + + + + \ No newline at end of file diff --git a/android/java/res/layout/fragment_recovery_phrase.xml b/android/java/res/layout/fragment_recovery_phrase.xml index 729795e90d5..0f14d28f654 100644 --- a/android/java/res/layout/fragment_recovery_phrase.xml +++ b/android/java/res/layout/fragment_recovery_phrase.xml @@ -1,5 +1,5 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/android/java/res/layout/fragment_restore_wallet.xml b/android/java/res/layout/fragment_restore_wallet.xml index 29d1c583d90..24e50994cf0 100644 --- a/android/java/res/layout/fragment_restore_wallet.xml +++ b/android/java/res/layout/fragment_restore_wallet.xml @@ -1,141 +1,151 @@ - - - - - - - + android:scrollbars="vertical" + android:fadeScrollbars="false" + android:fillViewport="true"> + android:gravity="center_vertical" + android:orientation="vertical"> - + - + + + + + + + + + + + + + + + + +