diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
index a587ff1d..15d05933 100644
Binary files a/.idea/caches/build_file_checksums.ser and b/.idea/caches/build_file_checksums.ser differ
diff --git a/.idea/caches/gradle_models.ser b/.idea/caches/gradle_models.ser
index db241e38..6f0fa66e 100644
Binary files a/.idea/caches/gradle_models.ser and b/.idea/caches/gradle_models.ser differ
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 2996d531..efb0da98 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -8,6 +8,15 @@
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index dc38e186..532d92b2 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -340,7 +340,7 @@
android:theme="@style/AppTheme.NoActionBar"
android:windowSoftInputMode="stateAlwaysHidden" />
diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/view/SendMoneyV2Activity.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/view/SendMoneyV2Activity.java
index bf40e880..d6330d36 100644
--- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/view/SendMoneyV2Activity.java
+++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/sendmoneyV2/view/SendMoneyV2Activity.java
@@ -16,14 +16,14 @@ import com.gmeremit.online.gmeremittance_native.sendmoneyV2.model.SendMoneyRequi
import com.gmeremit.online.gmeremittance_native.sendmoneyV2.presenter.SendMoneyV2Presenter;
import com.gmeremit.online.gmeremittance_native.sendmoneyV2.presenter.SendMoneyV2PresenterInterface;
import com.gmeremit.online.gmeremittance_native.transactionpasspromt.PasswordPromptListener;
-import com.gmeremit.online.gmeremittance_native.transactionpasspromt.TransactionPasswordPromptActivity;
+import com.gmeremit.online.gmeremittance_native.transactionpasspromt.view.TransactionPasswordPromptActivity;
import butterknife.BindView;
import butterknife.ButterKnife;
import static com.gmeremit.online.gmeremittance_native.recipientV2.view.recipientadd.RecipientAddV2Activity.RECIPIENT_INFO_BUNDLE_KEY;
-import static com.gmeremit.online.gmeremittance_native.transactionpasspromt.TransactionPasswordPromptActivity.PAYMENT_TYPE_BUNDLE_KEY;
-import static com.gmeremit.online.gmeremittance_native.transactionpasspromt.TransactionPasswordPromptActivity.TRANSACTION_PWD_ENC_DATA;
+import static com.gmeremit.online.gmeremittance_native.transactionpasspromt.view.TransactionPasswordPromptActivity.PAYMENT_TYPE_BUNDLE_KEY;
+import static com.gmeremit.online.gmeremittance_native.transactionpasspromt.view.TransactionPasswordPromptActivity.TRANSACTION_PWD_ENC_DATA;
public class SendMoneyV2Activity extends BaseActivity implements SendMoneyActionListener, SendMoneyV2PresenterInterface.SendMoneyV2ContractInterface, View.OnClickListener {
@@ -266,7 +266,7 @@ public class SendMoneyV2Activity extends BaseActivity implements SendMoneyAction
String paymentType=presenter.getPaymentType();
this.passwordPromptListener=listener;
Intent passwordRequestIntent=new Intent(this, TransactionPasswordPromptActivity.class);
- passwordRequestIntent.putExtra(PAYMENT_TYPE_BUNDLE_KEY,"");
+ passwordRequestIntent.putExtra(PAYMENT_TYPE_BUNDLE_KEY,paymentType);
startActivityForResult(passwordRequestIntent,PASSWORD_PROMPT_REQUEST);
}
diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/gateway/TransactionPasswordPromptV2Gateway.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/gateway/TransactionPasswordPromptV2Gateway.java
new file mode 100644
index 00000000..8d7418d9
--- /dev/null
+++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/gateway/TransactionPasswordPromptV2Gateway.java
@@ -0,0 +1,22 @@
+package com.gmeremit.online.gmeremittance_native.transactionpasspromt.gateway;
+
+import com.gmeremit.online.gmeremittance_native.base.PrivilegedGateway;
+import com.gmeremit.online.gmeremittance_native.transactionpasspromt.presenter.TransactionPasswordPromptV2InteractorInterface;
+import com.gmeremit.online.gmeremittance_native.utils.https.HttpClientV2;
+
+import io.reactivex.Observable;
+import okhttp3.ResponseBody;
+
+public class TransactionPasswordPromptV2Gateway extends PrivilegedGateway implements TransactionPasswordPromptV2InteractorInterface.TransactionPasswordPromptV2GatewayInterface {
+
+ private final TransactionPasswordPromptV2InteractorInterface interactor;
+
+ public TransactionPasswordPromptV2Gateway(TransactionPasswordPromptV2InteractorInterface interactor) {
+ this.interactor=interactor;
+ }
+
+ @Override
+ public Observable requestOtp(String auth, String Uid) {
+ return HttpClientV2.getInstance().requestOTPForSendMoney(auth,Uid);
+ }
+}
diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/presenter/TransactionPasswordPromptV2InteractorInterface.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/presenter/TransactionPasswordPromptV2InteractorInterface.java
new file mode 100644
index 00000000..74c740b5
--- /dev/null
+++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/presenter/TransactionPasswordPromptV2InteractorInterface.java
@@ -0,0 +1,15 @@
+package com.gmeremit.online.gmeremittance_native.transactionpasspromt.presenter;
+
+import com.gmeremit.online.gmeremittance_native.base.BaseInteractorInterface;
+import com.gmeremit.online.gmeremittance_native.base.PrivilegedGatewayInterface;
+
+import io.reactivex.Observable;
+import okhttp3.ResponseBody;
+
+public interface TransactionPasswordPromptV2InteractorInterface extends BaseInteractorInterface {
+
+ interface TransactionPasswordPromptV2GatewayInterface extends PrivilegedGatewayInterface
+ {
+ Observable requestOtp(String auth, String Uid);
+ }
+}
diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/presenter/TransactionPasswordPromptV2Presenter.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/presenter/TransactionPasswordPromptV2Presenter.java
new file mode 100644
index 00000000..d8b2922e
--- /dev/null
+++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/presenter/TransactionPasswordPromptV2Presenter.java
@@ -0,0 +1,95 @@
+package com.gmeremit.online.gmeremittance_native.transactionpasspromt.presenter;
+
+import android.os.Handler;
+
+import com.gmeremit.online.gmeremittance_native.base.BaseContractInterface;
+import com.gmeremit.online.gmeremittance_native.base.BasePresenter;
+import com.gmeremit.online.gmeremittance_native.customwidgets.CustomAlertDialog;
+import com.gmeremit.online.gmeremittance_native.transactionpasspromt.gateway.TransactionPasswordPromptV2Gateway;
+import com.gmeremit.online.gmeremittance_native.utils.Constants;
+import com.gmeremit.online.gmeremittance_native.utils.https.GenericApiObserverResponseV2;
+import com.gmeremit.online.gmeremittance_native.utils.https.GenericResponseDataModel;
+import com.gmeremit.online.gmeremittance_native.utils.https.MessageResponseDataModel;
+import com.google.gson.reflect.TypeToken;
+
+import java.lang.reflect.Type;
+
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.CompositeDisposable;
+import io.reactivex.schedulers.Schedulers;
+
+public class TransactionPasswordPromptV2Presenter extends BasePresenter implements TransactionPasswordPromptV2PresenterInterface,TransactionPasswordPromptV2InteractorInterface {
+
+ private final TransactionPasswordPromptV2PresenterInterface.TransactionPasswordPromptV2ContractInterface view;
+ private final TransactionPasswordPromptV2InteractorInterface.TransactionPasswordPromptV2GatewayInterface gateway;
+ private final CompositeDisposable compositeDisposable;
+
+ public TransactionPasswordPromptV2Presenter(TransactionPasswordPromptV2PresenterInterface.TransactionPasswordPromptV2ContractInterface view) {
+ this.view=view;
+ this.gateway=new TransactionPasswordPromptV2Gateway(this);
+ this.compositeDisposable = new CompositeDisposable();
+
+ }
+
+ @Override
+ public void getOtp() {
+ this.compositeDisposable.add(
+ this.gateway.requestOtp(this.gateway.getAuth(),this.gateway.getUserID())
+ .doOnSubscribe(disposable -> view.showProgressBar(true, "Requesting OTP..."))
+ .doFinally(() -> view.showProgressBar(false, ""))
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribeWith(new ResendRequestObserver())
+ );
+
+// new Handler().postDelayed(()->{
+// view.showPopUpMessage("Please check your mobile for OTP", CustomAlertDialog.AlertType.SUCCESS, alertType -> {
+// view.showResendRequestView(false);
+// view.startCountdownView(120000);
+// });
+// },2000);
+ }
+
+
+ class ResendRequestObserver extends GenericApiObserverResponseV2
+ {
+
+ @Override
+ protected Type setType() {
+ return TypeToken.getParameterized(GenericResponseDataModel.class, MessageResponseDataModel.class).getType();
+ }
+
+ @Override
+ protected void onSuccess(GenericResponseDataModel response) {
+ if (response.getErrorCode().equalsIgnoreCase(Constants.SUCCESS_CODE_V2)) {
+ view.showPopUpMessage(response.getMsg(), CustomAlertDialog.AlertType.SUCCESS, alertType -> {
+ view.showResendRequestView(false);
+ view.startCountdownView(120000);
+ });
+ }
+ else {
+ view.showPopUpMessage(response.getMsg(), CustomAlertDialog.AlertType.FAILED, alertType -> {
+ view.showResendRequestView(true);
+ });
+ }
+ }
+
+ @Override
+ public void onFailed(String message) {
+ view.showPopUpMessage(message, CustomAlertDialog.AlertType.FAILED, alertType -> view.exitView());
+ }
+
+ @Override
+ protected void onConnectionNotEstablished(String message) {
+ view.showPopUpMessage(message, CustomAlertDialog.AlertType.NO_INTERNET, null);
+ view.showResendRequestView(true);
+
+ }
+
+ @Override
+ protected void unauthorizedAccess(String message) {
+ gateway.clearAllUserData();
+ view.showPopUpMessage(message, CustomAlertDialog.AlertType.ALERT, alertType -> view.logout());
+ }
+ }
+}
diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/presenter/TransactionPasswordPromptV2PresenterInterface.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/presenter/TransactionPasswordPromptV2PresenterInterface.java
new file mode 100644
index 00000000..9822fb36
--- /dev/null
+++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/presenter/TransactionPasswordPromptV2PresenterInterface.java
@@ -0,0 +1,13 @@
+package com.gmeremit.online.gmeremittance_native.transactionpasspromt.presenter;
+
+import com.gmeremit.online.gmeremittance_native.base.BaseContractInterface;
+import com.gmeremit.online.gmeremittance_native.base.BasePresenterInterface;
+
+public interface TransactionPasswordPromptV2PresenterInterface extends BasePresenterInterface {
+ void getOtp();
+
+ interface TransactionPasswordPromptV2ContractInterface extends BaseContractInterface {
+ void startCountdownView(int durationMillisecond);
+ void showResendRequestView(boolean action);
+ }
+}
diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/TransactionPasswordPromptActivity.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/view/TransactionPasswordPromptActivity.java
similarity index 72%
rename from app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/TransactionPasswordPromptActivity.java
rename to app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/view/TransactionPasswordPromptActivity.java
index f8812d00..e72720bb 100644
--- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/TransactionPasswordPromptActivity.java
+++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/view/TransactionPasswordPromptActivity.java
@@ -1,12 +1,19 @@
-package com.gmeremit.online.gmeremittance_native.transactionpasspromt;
+package com.gmeremit.online.gmeremittance_native.transactionpasspromt.view;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.ActivityInfo;
+import android.graphics.Color;
import android.graphics.Rect;
import android.os.Build;
import android.os.Bundle;
+import android.os.CountDownTimer;
+import android.os.Handler;
+import android.support.v4.content.ContextCompat;
import android.support.v4.view.GestureDetectorCompat;
+import android.text.Spannable;
+import android.text.SpannableString;
+import android.text.style.ForegroundColorSpan;
import android.util.Log;
import android.view.GestureDetector;
import android.view.MotionEvent;
@@ -20,16 +27,20 @@ import android.widget.TextView;
import com.gmeremit.online.gmeremittance_native.R;
import com.gmeremit.online.gmeremittance_native.base.BaseActivity;
import com.gmeremit.online.gmeremittance_native.customwidgets.GmeErrorTextView;
+import com.gmeremit.online.gmeremittance_native.transactionpasspromt.presenter.TransactionPasswordPromptV2Presenter;
+import com.gmeremit.online.gmeremittance_native.transactionpasspromt.presenter.TransactionPasswordPromptV2PresenterInterface;
import com.gmeremit.online.gmeremittance_native.utils.security.securitykeypad.EncryptionManager;
import com.gmeremit.online.gmeremittance_native.utils.security.securitykeypad.SecurityKeyboardManager;
import com.gmeremit.online.gmeremittance_native.utils.security.securitykeypad.SecurityKeyboardView;
import com.gmeremit.online.gmeremittance_native.utils.security.securitykeypad.SecurityKeypadRequestParamBuilder;
import com.softsecurity.transkey.TransKeyActivity;
+import java.util.Locale;
+
import butterknife.BindView;
import butterknife.ButterKnife;
-public class TransactionPasswordPromptActivity extends BaseActivity implements SecurityKeyboardView.SecurityKeyboardFocusStateListener {
+public class TransactionPasswordPromptActivity extends BaseActivity implements SecurityKeyboardView.SecurityKeyboardFocusStateListener, TransactionPasswordPromptV2PresenterInterface.TransactionPasswordPromptV2ContractInterface, View.OnClickListener {
SecurityKeyboardManager securityKeyboardManager;
@@ -62,6 +73,8 @@ public class TransactionPasswordPromptActivity extends BaseActivity implements S
public static final String TRANSACTION_PWD_ENC_DATA = "bundleKeyEncData";
public static final String PAYMENT_TYPE_BUNDLE_KEY = "bundleKeyPaymentType";
private String paymentType;
+ private TransactionPasswordPromptV2PresenterInterface presenter;
+ private CountDownTimer countDownTimer;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -86,6 +99,7 @@ public class TransactionPasswordPromptActivity extends BaseActivity implements S
}
private void init() {
+ presenter = new TransactionPasswordPromptV2Presenter(this);
securityKeyboardView.setKeyboardContainerView(keypadContainer);
securityKeyboardView.setKeyboardBallonView(ballonView);
securityKeypadListener = new SecurityKeypadListener();
@@ -102,6 +116,7 @@ public class TransactionPasswordPromptActivity extends BaseActivity implements S
request.setMaxLength(4);
ballonView.setVisibility(View.INVISIBLE);
resendRequest.setVisibility(View.VISIBLE);
+
} else {
request.setHintString("Password");
title.setText(getString(R.string.enter_login_password_text));
@@ -121,10 +136,14 @@ public class TransactionPasswordPromptActivity extends BaseActivity implements S
private void performDefaultAction(Bundle savedInstanceState) {
securityKeyboardManager.showKeyboard();
+ if (checkIfRequiredOTPScreen())
+ new Handler().postDelayed(()->{
+ presenter.getOtp();
+ },400);
+
}
- private boolean checkIfRequiredOTPScreen()
- {
+ private boolean checkIfRequiredOTPScreen() {
return paymentType.equalsIgnoreCase("autodebit");
}
@@ -156,12 +175,16 @@ public class TransactionPasswordPromptActivity extends BaseActivity implements S
protected void onStart() {
super.onStart();
securityKeyboardView.setSecurityKeyboardFocusStateListener(this);
+ if(checkIfRequiredOTPScreen())
+ resendRequest.setOnClickListener(this);
}
@Override
protected void onStop() {
super.onStop();
securityKeyboardView.setSecurityKeyboardFocusStateListener(null);
+ if(checkIfRequiredOTPScreen())
+ resendRequest.setOnClickListener(null);
}
@@ -176,6 +199,67 @@ public class TransactionPasswordPromptActivity extends BaseActivity implements S
}
+ @Override
+ public void startCountdownView(int durationMillisecond) {
+ countDownTimer = new CountDownTimer(durationMillisecond, 1000) {
+
+ int redColor=ContextCompat.getColor(TransactionPasswordPromptActivity.this, R.color.colorPrimary);
+ int grayColor=ContextCompat.getColor(TransactionPasswordPromptActivity.this, R.color.darkgray2);
+ @Override
+ public void onTick(long millisUntilFinished) {
+ int seconds = (int) (millisUntilFinished / 1000);
+
+ int hours = seconds / (60 * 60);
+ int tempMint = (seconds - (hours * 60 * 60));
+ int minutes = tempMint / 60;
+ seconds = tempMint - (minutes * 60);
+
+ String timeRemaining = String.format(Locale.US, "%02d", minutes)
+ + ":" + String.format(Locale.US, "%02d", seconds);
+
+ Spannable tryInText = new SpannableString("Try again in ");
+ tryInText.setSpan(new ForegroundColorSpan(grayColor), 0, tryInText.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+ resendRequest.setText(tryInText);
+
+ Spannable timeText = new SpannableString(timeRemaining);
+ timeText.setSpan(new ForegroundColorSpan(redColor), 0, timeText.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+
+ resendRequest.append(timeText);
+ }
+
+ @Override
+ public void onFinish() {
+ showResendRequestView(true);
+ }
+ };
+ countDownTimer.start();
+ }
+
+ @Override
+ public void showResendRequestView(boolean action) {
+ if (resendRequest.getVisibility() != View.VISIBLE)
+ resendRequest.setVisibility(View.VISIBLE);
+ if (action) {
+ if (countDownTimer != null)
+ countDownTimer.cancel();
+ resendRequest.setText("Resend OTP");
+ resendRequest.setOnClickListener(this);
+
+ } else {
+ resendRequest.setText("");
+ resendRequest.setOnClickListener(null);
+ }
+ }
+
+ @Override
+ public void onClick(View v) {
+ switch (v.getId()) {
+ case R.id.resend_request:
+ this.presenter.getOtp();
+ break;
+ }
+ }
+
class SecurityKeypadListener implements SecurityKeyboardManager.SecurityKeyboardActionListenerFacade {
@Override
public void done(Intent intent) {
diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/TransactionPasswordPromptDialog.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/view/TransactionPasswordPromptDialog.java
similarity index 98%
rename from app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/TransactionPasswordPromptDialog.java
rename to app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/view/TransactionPasswordPromptDialog.java
index 9d5cf17f..0a630b7b 100644
--- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/TransactionPasswordPromptDialog.java
+++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/transactionpasspromt/view/TransactionPasswordPromptDialog.java
@@ -1,4 +1,4 @@
-package com.gmeremit.online.gmeremittance_native.transactionpasspromt;
+package com.gmeremit.online.gmeremittance_native.transactionpasspromt.view;
import android.app.Dialog;
import android.os.Bundle;
diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/API_URL.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/API_URL.java
index b4ebe15f..2472a591 100644
--- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/API_URL.java
+++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/API_URL.java
@@ -151,5 +151,6 @@ public class API_URL {
public static final String PENNY_TEST_SUBMIT="v1/mobile/pennytest/getcertified";
public static final String FETCH_AUTO_DEBIT_DATA = "v2/kftc/GetKftcParameters/{userId}";
public static final String DELETE_AUTO_DEBIT_ACCOUNT = "v2/kftc/DeleteAccount/{userId}";
+ public static final String REUQEST_SEND_MONEY_OTP = "v2/kftc/GetOTP/{userId}";
}
diff --git a/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/ApiEndpoints.java b/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/ApiEndpoints.java
index 6f5b5746..9875c1b9 100644
--- a/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/ApiEndpoints.java
+++ b/app/src/main/java/com/gmeremit/online/gmeremittance_native/utils/https/ApiEndpoints.java
@@ -352,4 +352,8 @@ public interface ApiEndpoints {
@POST(API_URL.DELETE_AUTO_DEBIT_ACCOUNT)
@Headers("Content-Type: application/json")
Observable deleteAutoDebitAccount(@Header("Authorization") String token, @Body() JsonObject jsonObject, @Path("userId") String userId);
+
+ @POST(API_URL.REUQEST_SEND_MONEY_OTP)
+ @Headers("Content-Type: application/json")
+ Observable requestOTPForSendMoney(@Header("Authorization") String token, @Path("userId") String userId);
}
diff --git a/app/src/main/res/layout/activity_transaction_password_prompt.xml b/app/src/main/res/layout/activity_transaction_password_prompt.xml
index 0ad5d484..a3bf40b0 100644
--- a/app/src/main/res/layout/activity_transaction_password_prompt.xml
+++ b/app/src/main/res/layout/activity_transaction_password_prompt.xml
@@ -61,15 +61,15 @@
android:id="@+id/resend_request"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:visibility="gone"
+ android:layout_gravity="center_horizontal"
android:layout_marginStart="8dp"
android:layout_marginTop="10dp"
android:layout_marginEnd="8dp"
- android:layout_gravity="center_horizontal"
android:padding="10dp"
android:text="@string/resend_request_text"
android:textColor="@color/colorPrimary"
- android:textSize="14sp" />
+ android:textSize="14sp"
+ android:visibility="invisible" />
+
+ android:layout_height="match_parent" />