From 9adc89a9c5f26d538d3bddd35fd8e51f715b0425 Mon Sep 17 00:00:00 2001 From: Samuelford24 Date: Tue, 23 Mar 2021 23:04:25 -0400 Subject: [PATCH 1/2] connected login and signup. Added agency identifier and reconfigured firebase. Finished UI of new menu. --- .idea/.name | 1 - app/src/main/AndroidManifest.xml | 12 +- .../sf/stormwaterutilityandroid/AgencyID.java | 13 ++ .../sf/stormwaterutilityandroid/Login.java | 19 ++- .../sf/stormwaterutilityandroid/MainMenu.java | 13 +- .../sf/stormwaterutilityandroid/SignUp.java | 69 ++++++---- .../com/sf/stormwaterutilityandroid/User.java | 13 +- .../WaterWay/WQI.java | 2 +- app/src/main/res/drawable/construction.png | Bin 0 -> 1544 bytes app/src/main/res/drawable/construction2.png | Bin 0 -> 3039 bytes app/src/main/res/drawable/settings.png | Bin 0 -> 720 bytes app/src/main/res/drawable/settings2.png | Bin 0 -> 1634 bytes app/src/main/res/drawable/settings3.png | Bin 0 -> 4836 bytes app/src/main/res/drawable/water.png | Bin 0 -> 3954 bytes app/src/main/res/layout/activity_login.xml | 32 ++--- app/src/main/res/layout/activity_menu2.xml | 124 ++++++++++++++++++ .../res/layout/activity_reset_password.xml | 4 +- app/src/main/res/layout/activity_sign_up.xml | 68 +++------- 18 files changed, 256 insertions(+), 114 deletions(-) delete mode 100644 .idea/.name create mode 100644 app/src/main/java/com/sf/stormwaterutilityandroid/AgencyID.java create mode 100644 app/src/main/res/drawable/construction.png create mode 100644 app/src/main/res/drawable/construction2.png create mode 100644 app/src/main/res/drawable/settings.png create mode 100644 app/src/main/res/drawable/settings2.png create mode 100644 app/src/main/res/drawable/settings3.png create mode 100644 app/src/main/res/drawable/water.png create mode 100644 app/src/main/res/layout/activity_menu2.xml diff --git a/.idea/.name b/.idea/.name deleted file mode 100644 index c6e7f40..0000000 --- a/.idea/.name +++ /dev/null @@ -1 +0,0 @@ -StormWaterUtilityAndroid \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6b5108f..cf30795 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -12,11 +12,7 @@ - - - - - + + + + + + + diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/AgencyID.java b/app/src/main/java/com/sf/stormwaterutilityandroid/AgencyID.java new file mode 100644 index 0000000..c904463 --- /dev/null +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/AgencyID.java @@ -0,0 +1,13 @@ +package com.sf.stormwaterutilityandroid; + +public class AgencyID { + private String agencyID; + + public AgencyID(String agencyID) { + this.agencyID = agencyID; + } + + public String getAgencyID() { + return agencyID; + } +} diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/Login.java b/app/src/main/java/com/sf/stormwaterutilityandroid/Login.java index e2fc838..3461202 100644 --- a/app/src/main/java/com/sf/stormwaterutilityandroid/Login.java +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/Login.java @@ -18,6 +18,8 @@ import com.google.android.gms.tasks.Task; import com.google.firebase.auth.AuthResult; import com.google.firebase.auth.FirebaseAuth; +import com.google.firebase.firestore.DocumentSnapshot; +import com.google.firebase.firestore.FirebaseFirestore; import com.sf.stormwaterutilityandroid.WaterWay.WaterWayNav; public class Login extends AppCompatActivity { @@ -55,7 +57,7 @@ public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { setContentView(R.layout.activity_login); inputEmail = findViewById(R.id.email); inputPassword = findViewById(R.id.password); - progressBar = findViewById(R.id.progressBar); + progressBar = findViewById(R.id.progressBar3); btnSignup = findViewById(R.id.btn_signup); btnLogin = findViewById(R.id.btn_login); btnReset = findViewById(R.id.btn_reset_password); @@ -80,6 +82,7 @@ public void onClick(View v) { btnLogin.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { + String email = inputEmail.getText().toString(); final String password = inputPassword.getText().toString(); @@ -113,11 +116,23 @@ public void onComplete(@NonNull Task task) { } } else { if (auth.getCurrentUser().isEmailVerified()) { - Intent intent = new Intent(Login.this, WaterWayNav.class); + FirebaseFirestore.getInstance().collection("Users").document(auth.getUid()).get().addOnCompleteListener(new OnCompleteListener() { + @Override + public void onComplete(@NonNull Task task) { + if (task.isSuccessful()) { + if (task.getResult().exists()) { + String agencyID = task.getResult().get("agencyID").toString(); + AgencyID id = new AgencyID(agencyID); + } + } + } + }); + Intent intent = new Intent(Login.this, MainMenu.class); startActivity(intent); progressBar.setVisibility(View.INVISIBLE); finish(); } else { + progressBar.setVisibility(View.INVISIBLE); AlertDialog.Builder builder; builder = new AlertDialog.Builder(Login.this); //builder.setIcon(R.drawable.open_browser); diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/MainMenu.java b/app/src/main/java/com/sf/stormwaterutilityandroid/MainMenu.java index 6dd4920..6424c81 100644 --- a/app/src/main/java/com/sf/stormwaterutilityandroid/MainMenu.java +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/MainMenu.java @@ -15,12 +15,12 @@ public class MainMenu extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main_menu); - launchWWF = findViewById(R.id.wwf); - launchCF = findViewById(R.id.cf); - launchSettings = findViewById(R.id.settings); - launchSettings.setOnClickListener(new View.OnClickListener() { - @Override + setContentView(R.layout.activity_menu2); + // launchWWF = findViewById(R.id.wwf); + // launchCF = findViewById(R.id.cf); + // launchSettings = findViewById(R.id.settings); + // launchSettings.setOnClickListener(new View.OnClickListener() { + /* @Override public void onClick(View v) { Intent intent = new Intent(MainMenu.this, Settings.class); startActivity(intent); @@ -44,5 +44,6 @@ public void onClick(View v) { } }); + */ } } \ No newline at end of file diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/SignUp.java b/app/src/main/java/com/sf/stormwaterutilityandroid/SignUp.java index e0eaa03..48b04ae 100644 --- a/app/src/main/java/com/sf/stormwaterutilityandroid/SignUp.java +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/SignUp.java @@ -1,5 +1,7 @@ package com.sf.stormwaterutilityandroid; +import android.content.DialogInterface; +import android.content.Intent; import android.os.Bundle; import android.text.TextUtils; import android.view.View; @@ -9,6 +11,7 @@ import android.widget.Toast; import androidx.annotation.NonNull; +import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AppCompatActivity; import com.google.android.gms.tasks.OnCompleteListener; @@ -34,16 +37,14 @@ protected void onCreate(Bundle savedInstanceState) { //Get Firebase auth instance auth = FirebaseAuth.getInstance(); - btnSignIn = findViewById(R.id.sign_in_button); - btnSignUp = findViewById(R.id.sign_up_button); + btnSignUp = findViewById(R.id.signUp); + inputEmail = findViewById(R.id.email); inputPassword = findViewById(R.id.password); progressBar = findViewById(R.id.progressBar); btnResetPassword = findViewById(R.id.btn_reset_password); - inputGrade = findViewById(R.id.grade); inputName = findViewById(R.id.name); - inputID = findViewById(R.id.studentID); - inputHR = findViewById(R.id.homeroom); + progressBar = findViewById(R.id.progressBar2); /* btnResetPassword.setOnClickListener(new View.OnClickListener() { @Override @@ -52,12 +53,6 @@ public void onClick(View v) { } }); */ - btnSignIn.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - finish(); - } - }); btnSignUp.setOnClickListener(new View.OnClickListener() { @Override @@ -66,14 +61,13 @@ public void onClick(View v) { final String email = inputEmail.getText().toString().trim(); final String password = inputPassword.getText().toString().trim(); final String name = inputName.getText().toString().trim(); - final String grade = inputGrade.getText().toString().trim(); - final String studentID = inputID.getText().toString().trim(); - final String homeroom = inputHR.getText().toString().trim(); + if (TextUtils.isEmpty(email)) { Toast.makeText(getApplicationContext(), "Enter a email address!", Toast.LENGTH_SHORT).show(); return; } - + int index = email.indexOf("@"); + String agencyID = email.substring(index + 1); if (TextUtils.isEmpty(password)) { Toast.makeText(getApplicationContext(), "Enter a password!", Toast.LENGTH_SHORT).show(); return; @@ -83,12 +77,21 @@ public void onClick(View v) { Toast.makeText(getApplicationContext(), "Password too short, enter minimum 6 characters!", Toast.LENGTH_SHORT).show(); return; } - if (TextUtils.isEmpty(homeroom)) { - Toast.makeText(getApplicationContext(), "Enter a homeroom!", Toast.LENGTH_SHORT).show(); - return; - } - if (TextUtils.isEmpty(studentID)) { - Toast.makeText(getApplicationContext(), "Enter a StudentID!", Toast.LENGTH_SHORT).show(); + + if (!email.contains("in.gov") && !email.contains("purdue.edu")) { + //invalid email + AlertDialog.Builder builder; + builder = new AlertDialog.Builder(SignUp.this); + builder.setTitle("Incorrect Email"); + builder.setMessage("You are not allowed to create an email with your current domain"); + builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + dialog.dismiss(); + } + }); + + builder.setCancelable(true); + builder.show(); return; } @@ -109,8 +112,10 @@ public void onComplete(@NonNull Task task) { } else { final String create_uid = FirebaseAuth.getInstance().getUid(); final FirebaseUser user2 = auth.getCurrentUser(); - user2.sendEmailVerification(); - User user = new User(name,email,create_uid); + // user2.sendEmailVerification(); + + System.out.println(agencyID); + User user = new User(name, email, create_uid, agencyID); FirebaseFirestore.getInstance().collection("Users") .document(create_uid) @@ -122,10 +127,23 @@ public void onSuccess(Void aVoid) { user2.sendEmailVerification(); - // progressBar.setVisibility(View.GONE); // Toast.makeText(SignupActivity.this, getString(R.string.registration_success), Toast.LENGTH_LONG).show(); - // startActivity(new Intent(SignupActivity.this, LoginActivity.class)); + AlertDialog.Builder builder; + builder = new AlertDialog.Builder(SignUp.this); + builder.setTitle("Account created"); + builder.setMessage("Your account has successfully been created. An email has been sent, so you can verify your email. You must verify your email before logging in."); + builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + startActivity(new Intent(SignUp.this, Login.class)); + dialog.dismiss(); + } + }); + + builder.setCancelable(true); + builder.show(); + + // finish(); } @@ -149,7 +167,6 @@ public void onFailure(@NonNull Exception e) { } - @Override protected void onResume() { super.onResume(); diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/User.java b/app/src/main/java/com/sf/stormwaterutilityandroid/User.java index 5671a58..efeb955 100644 --- a/app/src/main/java/com/sf/stormwaterutilityandroid/User.java +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/User.java @@ -1,12 +1,13 @@ package com.sf.stormwaterutilityandroid; class User { - String name, email, uid; + String name, email, uid,agencyID; - public User(String name, String email, String uid) { + public User(String name, String email, String uid, String agencyID) { this.name = name; this.email = email; this.uid = uid; + this.agencyID = agencyID; } public String getName() { @@ -32,4 +33,12 @@ public String getUid() { public void setUid(String uid) { this.uid = uid; } + + public String getAgencyID() { + return agencyID; + } + + public void setAgencyID(String agencyID) { + this.agencyID = agencyID; + } } diff --git a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WQI.java b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WQI.java index 72d7601..30c36f5 100644 --- a/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WQI.java +++ b/app/src/main/java/com/sf/stormwaterutilityandroid/WaterWay/WQI.java @@ -31,5 +31,5 @@ public static double getWQI(double tempChange, double turbidity, double pH, doub } -} + diff --git a/app/src/main/res/drawable/construction.png b/app/src/main/res/drawable/construction.png new file mode 100644 index 0000000000000000000000000000000000000000..62c9edb5c27ba092dbcbd50934ba5a0644ae5fa9 GIT binary patch literal 1544 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/settings3.png b/app/src/main/res/drawable/settings3.png new file mode 100644 index 0000000000000000000000000000000000000000..ddb40d4c850f4ebdbc1c65b84a6be76d50b5607d GIT binary patch literal 4836 zcmV002t}1^@s6I8J)%00006VoOIv0RI60 z0RN!9r;`8x5}8RvK~#90?VNdZRn@)6Kl_|JC1jolG7yp&K_EbwiXh<7Dn&pL>j0>= z6%j4gzP_%iowV(1yB=bdiW3Mytz>};;>4&3GK4{`S%4ed(40?siR4zc6b0lM)`hwA|ovC-nPKT~$|hzB938?b;yC;k*s0&jT?TP`Y7G2eu(t zt(sXc;^x_XX=L3J|Biqeml;!(?C>dPzwD}guZtxM*M#UM`H+Y)N5i%x!s_blrNHkKLR1W<>y;83Bm7_ zWXm!k=Cm8IJ?&i6p85aKs#%G~FA(rAx~ zCFNRGD|IXf;nQRIJ3+8qO|~rR=(YrCoHTn98bfrKc~#`zH*B4m>&_FY4OzU>qLn)H z{-cBfkSx$jTi=$2|1`H(+&JkcsZwXN6#P@MIRCdRbKMq8%C)K{47ng@cGp%fF-tRq zu9b4Tp|eU-M|NeX+hTcdJvqC(cCLi-ih5iwAL6qRw`yhO&tLj;_>O;<2=wcb;t@@E zJ>I36t}4_|xP6dN_%o9Hh|lu={OvNWWYt1>N#4?1ML(05YuCxzbi#2ifdI8>BOv+&qJJ%fnaF(wbqH6kHAmB=! z`$}1PJqsUtg`6Aa^3{P&NX><_)kXGocc2(dII2J6&ri?t#Z;>t z0|>+ckTV6;2x%?{Z=BLgovY<{AQV7MbO;E@9B~7gBW}P}UxlS#80LU}G&k1p$@Vqu z-BU^%U^RhI!! zUs=Fyx8)ES8QiW-yT61Hw%Sn)Mm(*JjLJ!6>B8-3 zLP~Ew85Ew#p1o(#G`;=K=uYpSmq@KuT(-8=8UEddLd@%|*x_*T+0KHt&KDQgvgeCa z^v@W95Q4pnAA~u zYpa_lp3I}PKKv7XOBPQQNXjFdy6h&d;tY1@d;tO^kK8Z0Pl^@Q7)_+7 z$M`rXZjj}#Ms&4k_zgab_4S&0hgaf@%eP{81v7KeAE~W4h11c@;Ohqy&@TjAeHCYm zk0GVN91ukRfx{Ruc>G1}Ln32QE_vMNp8bo+>B3s}36Cr^bNpXQ(Kjj)t_E7 z)nFt()!W&|+6s>C+XlukTAHjNBq1?Te6}f%5+2r%habL) zx7V+26RNW01Qn&_1V#@<>Tc}TD%`E-u~r=?He(9SE|rr<4sz8s*_Z=@Fq+IXSz8DV zxv*wvFsMBK%Ub{#G9;O0%QuiZXgnnadnhmX6r(YKt42@9(cDOAh~-Lz0vPUVMSlW( zMrVbiMx|3%T@HZ5ZlkQ|41tjuxLWFQoI6VDz%;VQO(s4eme%?cNL@n-h~vnfPrSyn zr|`nEE!b?1cI`(;1yg^nnqBWL<;(4_bKBHpt{oM~CvW_LQ~NiPGjf0*L%E17Un~0b zuaK2*MrkfjryHI5`9(bcubuqpzQ1#H&qs)$bTn5BI7$f)4dcsC-@@K(BQ80O?8*0X z>hKqYCXK_&scAX+4J&v4F0|7XB z@+>JS(F6pTd>!*;sH!W{mmu%kmDQ?6c2v~d+{&(9CwX@1hh&bL20&2EAV8tD@ieiC zsT|$;CV%?F4BmV1*G#{8AiLgOLi*s5RG-?4+iBx$aRG{IBcxN(?M{_CsEJZ6DW6oJ-m@6F}-%YrRRP z(P-f8nL|vUHk_=iL<|O%TW`%FCMFn<+lkR+#2g%l+kIin&S$bg=5GOF`zyn@PQT9N?|xY-z;MFCHl+ilX3lU%X%7c6m@$140N|8cI-f z?}oDGadUk4dd{9Xjyh#xyZ$OG8+rPfcR5#U#pQId^7VxsPH%ig2xk)}LDuLQe0BUF!SN%pHxw~2eE^ogU_M^;Th^>ugvDZPvtM3O&r2_DW%{inaJ0I4 z<&_;=HTDh$4w-TUDfNc zr(w~V8lHG^En|MXn26XEc7CuL)g0ly4eeDVqz)pWUoeezwX{0j1jSwhC|HD*^uZ&j zDmliPeYq@q{=)RrW^=Ic;T1$A4#VD1j!+Gx4ZDeytH)w%sKn!P5*n4r`NkTAq7oL} zpVET89NM;mH`Y9i!JzswJfEM2zQwGByXrh8s~hNK#UX8AEVE{f=JNyFiA{cpVdH+p zsiXO{w%CbEzY({h;;=g~hGr2Y1e&`AoHeA6y&izD=wzxY>!_}=5*O=T7T&b!Ac`@R zaZ|mggmhi!6-?0%}V+|k>=p?2MA~n-{QlP%-E2iF(?XyrogRgT#f0EL|t}29t z26#mPBI8mRJp2cQhlgS`NSyWtgb+AvRTzYW5R03kV=l~~0{VrJI(P!lF8QeKx0y3X z<8j)kuPy?qbMVu5@fczWh|EMt3AzV^IS9>|$f;w8u-ob}n)^}T;L{1DZ)i8Xw1*$l z9dQ8Un2t(yU1#Hl!^B*5bK7sBQSl6)I33O7qV{YNt#&KHaq&dNrJ^V*)^lYv)>aT2 zm56FEQdY2=Cx1J=t-Zx!BrZN2$9XG-HM=o{X5ew2N4RQ;jt)n2IWPr><7g-(AR>c; zgP(Eri0k-p<%fg>n;AYll@TM-x)_%{=&J%giRH|{GYjkI8B(!;DGFguhIZy*5t02U zEBKtG%p9!eDmZ(3KT_98${I&}%7s~lu6g)k+|XLx_2l7iUu!EQ1~&!nmLB&s1CkK4(OcmJNF z`!=#+!#Z+v7ZDQD=_b^+9uv!%e`l5=!~v<<0?};Xt_6<`f`(jFPf-+}dU6I!pZl2i zU;PzEgJ9|{*$4seZ&<>hAKXrQwl_YV+_wp%Ud4(P4-ybyqNT;jiQ^R)W#&&ll}ACr zS;pM_bBv|{Gz>Uxb(qme8xYCkk52_4v3~^XHy%b)qfyMEoGtb+DCY*o-0~2O)n}-w zv34ewrV7K39urFyES6lHv`J?LA~5s9Zpk;s3@X2R{1*1^Eo4AitarZ;m~d?ti+`C* z(p97IxII*!$>(SHjc%K!1O}Qf5(=QQvWZEv|C^}9bfna2syU5n3c+a5FdHufZ=+E~ zml{IoNU5W_-ME}B9N7FC4Ry7cjGYGh%_8OQ#;!DI8(&uyB*eB~-~`$|oWhtf7cWpG zr$jMeKn!`$EhHo~n5f7Ql9D={ZUPV)70juFA0t$S$hb75=R9r%4o?fEMOD1~@;2h) zLizXGdq~TkinZB;-C9M$h*2Ecx{A24^E|WW5kf*cP0n*W?ZhQ?nP<83?_4MZ7oTTP zEQs*y@OKGc)AUX^Kflf4LnZ9lTgc|k#~C+m5p`8%w75;QG@T_ZEEqiJ@i1 z?j|U9D6MtJ$(b~bwM*{jrI#KcCML8q7j>%1ks=Zv^m!86WzUU8o|goyX!}7JZ6atm zpx`-w1l`l*t1q900>~bo%7O(qvS`tb6ztAp==iC)Y-I$7CSiA~I0;8u`qN4zL9s*e z*el5%f0MV*CKJsatc$e`1D5(D6!;*Pn3Ja&M!xk^gH#iwB8D46#${j(YXWdLZbxsu zd>gAL$;gbuX01mEg$X~t7o)Ti9-V?YC>~QtGE#S87EKJy%*0^yhJ}H{uIITIKIzPC zqoP?}@V75M=UF0WO%+fDZ=#jv{$5JCG$830{`&KqEt`)KmEaBjifUx&_^B8SChDt- z@pwFh#|%UWg;V(-Vz*Wj8k<4MiJjaxZ(PS?fv3d4IlkW#7uxxc_Y_U*e(A^h^_5ci zRTWP>wU)$;u~eQpfW5hyu*ew3+_I3Ugfv{v7PhSU9a)(XWM?O_ZCe4uvs1a}p7HJ4 z6L3&Tv5fBQoM}f~@c~?C+3IUloqc=<$Brs18(F@5D>G+~BzssYo3|e2)z@}%>w`-< zbL3N6t9SC(zuw`Csa9PVV@+vuyL_9XJ-T&TSu0-kpcG`764v*FN1o+U+S_{UVYD-L>N{t*vfcE>BlenQtLqP^&+A!fn#$ z3pipN@z$sQ`t0@rTs67qVIZ%&cKpR+G5R4C@2V*Qi#3C`L`eRLWQ#m_SBk$ryDgRw zf6!I8buO^3yS93XJk@Re$(023OX-o921LfAPBq1H2ZHY{0~cfJc${nv>@p>v`L~gp_Ml zz09#tO7S$%>5R6AXcX|2l44oj6Y;4%djCz>{TzVB=`upT%C900jp6^0$XeHFEb zKZn^mL?TBDysN5GIFs;xTA)L|-ltp7w@%#2$~U9Xv@o}>g|>ayK~b9!dZXw+zrH8> z*rByAlD`N50000< KMNUMnLSTZvl5B+l literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/water.png b/app/src/main/res/drawable/water.png new file mode 100644 index 0000000000000000000000000000000000000000..92808843d9d3e751a01962463740389840eec3e4 GIT binary patch literal 3954 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 61b3328..904aa6e 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -16,8 +16,10 @@ android:padding="@dimen/activity_horizontal_margin" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="1.0" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent"> + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="1.0"> + android:textColor="@android:color/white" />