Last active
February 15, 2022 03:56
-
-
Save rkbi/60b39e16d69288c4e08dc7cffe03cb10 to your computer and use it in GitHub Desktop.
Revisions
-
rkbi revised this gist
Feb 15, 2022 . No changes.There are no files selected for viewing
-
rkbi created this gist
Feb 15, 2022 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,257 @@ package com.sslwireless.sslsdkintegration; import android.content.Context; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.widget.ArrayAdapter; import android.widget.Button; import android.widget.CompoundButton; import android.widget.EditText; import android.widget.RadioButton; import android.widget.Spinner; import android.widget.Toast; import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; import com.sslwireless.sslcommerzlibrary.model.initializer.SSLCAdditionalInitializer; import com.sslwireless.sslcommerzlibrary.model.initializer.SSLCCustomerInfoInitializer; import com.sslwireless.sslcommerzlibrary.model.initializer.SSLCEMITransactionInitializer; import com.sslwireless.sslcommerzlibrary.model.initializer.SSLCProductInitializer; import com.sslwireless.sslcommerzlibrary.model.initializer.SSLCProductInitializer.ProductProfile; import com.sslwireless.sslcommerzlibrary.model.initializer.SSLCShipmentInfoInitializer; import com.sslwireless.sslcommerzlibrary.model.initializer.SSLCommerzInitialization; import com.sslwireless.sslcommerzlibrary.model.response.SSLCTransactionInfoModel; import com.sslwireless.sslcommerzlibrary.model.util.SSLCCurrencyType; import com.sslwireless.sslcommerzlibrary.model.util.SSLCEnums; import com.sslwireless.sslcommerzlibrary.model.util.SSLCLanguage; import com.sslwireless.sslcommerzlibrary.model.util.SSLCSdkType; import com.sslwireless.sslcommerzlibrary.view.singleton.IntegrateSSLCommerz; import com.sslwireless.sslcommerzlibrary.viewmodel.listener.SSLCTransactionResponseListener; import com.sslwireless.sslsdkintegration.databinding.ActivityMainBinding; public class MainActivity extends AppCompatActivity implements SSLCTransactionResponseListener { private Context context; private Button tv_hello; private EditText etAmount, etPhone, storeID, storePass,multiCard; double amount = 15; String phoneNumber = ""; RadioButton rbTest, rbLive, rbDev; SSLCommerzInitialization sslCommerzInitialization; private ActivityMainBinding binding; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); binding = ActivityMainBinding.inflate(LayoutInflater.from(this)); setContentView(binding.getRoot()); //setContentView(R.layout.activity_main); context = this; // tv_hello = findViewById(R.id.tv_hello); // storeID = findViewById(R.id.storeID); // storePass = findViewById(R.id.storePass); // etAmount = findViewById(R.id.etAmount); // etPhone = findViewById(R.id.etPhone); // multiCard = findViewById(R.id.multiCard); // rbTest = findViewById(R.id.radio0); //binding.etProductName.setText("Burger"); //binding.etProductCategory.setText("food"); //binding.etDiscountAmount.setText("5"); binding.storeID.setText("testbox"); binding.storePass.setText("qwerty"); binding.etPhone.setText("01408335173"); binding.etCustomerName.setText("Amimul"); binding.etEmail.setText("[email protected]"); binding.etAddress.setText("8 Banasree"); binding.etCity.setText("Dhaka"); binding.cbCustomer.setOnCheckedChangeListener((buttonView, isChecked) -> { if (isChecked){ binding.etPhone.setText("01408335173"); binding.etCustomerName.setText("Amimul"); binding.etEmail.setText("[email protected]"); binding.etAddress.setText("8 Banasree"); binding.etCity.setText("Dhaka"); }else{ binding.etPhone.getText().clear(); binding.etCustomerName.getText().clear(); binding.etEmail.getText().clear(); binding.etAddress.getText().clear(); binding.etCity.getText().clear(); } }); binding.tvHello.setOnClickListener(v -> initTransaction()); } private void initTransaction() { if (!binding.etAmount.getText().toString().isEmpty()) { amount = Double.parseDouble(binding.etAmount.getText().toString().trim()); } if (!binding.etPhone.getText().toString().isEmpty()) { phoneNumber = binding.etPhone.getText().toString().trim(); } // String[] items = new String[]{"general", "physical-goods", "non-physical-goods"}; // ArrayAdapter<String> adapter = new ArrayAdapter<String> (MainActivity.this, android.R.layout.simple_spinner_item, items); // adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); // binding.spinnerProfile.setAdapter(adapter); if(binding.radio0.isChecked()) { sslCommerzInitialization = new SSLCommerzInitialization(binding.storeID.getText().toString(), binding.storePass.getText().toString(), amount, SSLCCurrencyType.BDT, "123456789098765", "food", SSLCSdkType.TESTBOX) .addMultiCardName(binding.multiCard.getText().toString()) .addLanguage(SSLCLanguage.English) .addOTPReadHashKey(""); }else if(binding.radio1.isChecked()) { sslCommerzInitialization = new SSLCommerzInitialization(binding.storeID.getText().toString(), binding.storePass.getText().toString(), amount, SSLCCurrencyType.BDT, "123456789098765", "food", SSLCSdkType.LIVE) .addMultiCardName(binding.multiCard.getText().toString()) .addOTPReadHashKey(""); } final SSLCCustomerInfoInitializer SSLCCustomerInfoInitializer = setCustomerInfo(); SSLCEMITransactionInitializer sslcEMITransactionInitializer = null; if (binding.cbEmiEnabled.isChecked()){ sslcEMITransactionInitializer = new SSLCEMITransactionInitializer(1); sslcEMITransactionInitializer.setEmi_max_list_options(1); sslcEMITransactionInitializer.setEmi_options(1); sslcEMITransactionInitializer.setEmi_selected_inst(3); } SSLCProductInitializer SSLCProductInitializer = setProductInfo(); SSLCShipmentInfoInitializer sslcShipmentInfoInitializer = null; if (!binding.etShippingItem.getText().toString().isEmpty()) { sslcShipmentInfoInitializer = new SSLCShipmentInfoInitializer(binding.etShippingMethod.getText().toString(), Integer.parseInt(binding.etShippingItem.getText().toString()), new SSLCShipmentInfoInitializer.ShipmentDetails(binding.etShpiName.getText().toString(), binding.etShipAddress.getText().toString(), "Dhaka", "1000", "BD")); } //ProviderInstaller.installIfNeeded(getContext()); SSLCAdditionalInitializer sslcAdditionalInitializer = setAdditionalInfo(); IntegrateSSLCommerz .getInstance(context) .addSSLCommerzInitialization(sslCommerzInitialization) .addCustomerInfoInitializer(SSLCCustomerInfoInitializer) .addEMITransactionInitializer(sslcEMITransactionInitializer) .addShipmentInfoInitializer(sslcShipmentInfoInitializer) .addProductInitializer(SSLCProductInitializer) .addAdditionalInitializer(sslcAdditionalInitializer) .buildApiCall(this); } private SSLCCustomerInfoInitializer setCustomerInfo() { SSLCCustomerInfoInitializer sslcCustomerInfoInitializer = null; if (!phoneNumber.isEmpty()) { String customerName = binding.etCustomerName.getText().toString(); String email = binding.etEmail.getText().toString(); String address = binding.etAddress.getText().toString(); String city = binding.etCity.getText().toString(); sslcCustomerInfoInitializer = new SSLCCustomerInfoInitializer(customerName, email, address, city, "", "", phoneNumber); } return sslcCustomerInfoInitializer; } private SSLCProductInitializer setProductInfo(){ SSLCProductInitializer SSLCProductInitializer = null; if (!binding.etProductName.getText().toString().isEmpty()) { String productName = binding.etProductName.getText().toString(); String productCat = binding.etProductCategory.getText().toString(); String productAmount = binding.etProductAmount.getText().toString(); String discountAmount = binding.etDiscountAmount.getText().toString(); String spinnertext = binding.spinnerProfile.getSelectedItem().toString(); if (spinnertext.equalsIgnoreCase("general")){ SSLCProductInitializer = new SSLCProductInitializer(productName, productCat, new SSLCProductInitializer.ProductProfile.General(spinnertext, "A")); }else if (spinnertext.equalsIgnoreCase("physical-goods")) { SSLCProductInitializer = new SSLCProductInitializer(productName, productCat, new SSLCProductInitializer.ProductProfile.PhysicalGoods(spinnertext, "A")); }else if (spinnertext.equalsIgnoreCase("non-physical-goods")) { SSLCProductInitializer = new SSLCProductInitializer(productName, productCat, new SSLCProductInitializer.ProductProfile.NonPhysicalGoods(spinnertext, "A")); }else if (spinnertext.equalsIgnoreCase("telecom-vertical")) { SSLCProductInitializer = new SSLCProductInitializer(productName, productCat, new SSLCProductInitializer.ProductProfile.TelecomVertical(spinnertext, "A", "", "")); }else if (spinnertext.equalsIgnoreCase("travel-vertical")) { SSLCProductInitializer = new SSLCProductInitializer(productName, productCat, new SSLCProductInitializer.ProductProfile.TravelVertical(spinnertext, "A", "", "", "")); }else{ SSLCProductInitializer = new SSLCProductInitializer(productName, productCat, new SSLCProductInitializer.ProductProfile.AirlinesTicket(spinnertext, "A", "", "", "","")); } if (!productAmount.isEmpty()) { SSLCProductInitializer.addDiscountAmount(Double.parseDouble(productAmount)); } if (!discountAmount.isEmpty()) { SSLCProductInitializer.addDiscountAmount(Double.parseDouble(discountAmount)); } } return SSLCProductInitializer; } private SSLCAdditionalInitializer setAdditionalInfo(){ final SSLCAdditionalInitializer sslcAdditionalInitializer = new SSLCAdditionalInitializer(); if (!binding.etValueA.getText().toString().isEmpty()) { sslcAdditionalInitializer.setValueA(binding.etValueA.getText().toString()); } if (!binding.etValueB.getText().toString().isEmpty()) { sslcAdditionalInitializer.setValueB(binding.etValueB.getText().toString()); } if (!binding.etValueC.getText().toString().isEmpty()) { sslcAdditionalInitializer.setValueC(binding.etValueC.getText().toString()); } if (!binding.etValueD.getText().toString().isEmpty()) { sslcAdditionalInitializer.setValueD(binding.etValueD.getText().toString()); } if (!binding.etBillNumber.getText().toString().isEmpty()) { sslcAdditionalInitializer.setBill_number(binding.etBillNumber.getText().toString()); } if (!binding.etUserRefer.getText().toString().isEmpty()) { sslcAdditionalInitializer.setUser_refer(binding.etUserRefer.getText().toString()); } if (!binding.etCampaignCode.getText().toString().isEmpty()) { sslcAdditionalInitializer.setCampaign_code(binding.etCampaignCode.getText().toString()); } if (!binding.etInvoiceId.getText().toString().isEmpty()) { sslcAdditionalInitializer.setInvoice_id(binding.etInvoiceId.getText().toString()); } if (!binding.etNoOffer.getText().toString().isEmpty()) { sslcAdditionalInitializer.setNo_offer(Integer.parseInt(binding.etNoOffer.getText().toString())); } return sslcAdditionalInitializer; } @Override public void transactionSuccess(SSLCTransactionInfoModel transactionInfo) { //Toast.makeText(context, "Transaction successful: Amount " + transactionInfo.getAmount()+"TK", Toast.LENGTH_LONG).show(); String vlue = "Transaction successful: Amount " + transactionInfo.getAmount()+" TK"; FragmentManager manager = getSupportFragmentManager(); final ConfirmDF dialogFragment = new ConfirmDF(); Bundle args = new Bundle(); args.putString(SSLCEnums.Common.Type.name(), vlue); dialogFragment.setArguments(args); //dialogFragment.show(manager, "dialog_fragment"); FragmentTransaction ft = manager.beginTransaction(); ft.add(dialogFragment, "fragment_tag"); ft.commitAllowingStateLoss(); } @Override public void transactionFail(String message) { Toast.makeText(context, message, Toast.LENGTH_LONG).show(); } @Override public void closed(String message) { Toast.makeText(context, message, Toast.LENGTH_LONG).show(); } } This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,476 @@ <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <androidx.core.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginBottom="40dp" android:gravity="center"> <EditText android:id="@+id/storePass" android:layout_width="match_parent" android:layout_height="60dp" android:layout_below="@id/storeID" android:layout_margin="8dp" android:gravity="center" android:hint="Default Store pass set but can edit" android:inputType="text" android:padding="20dp"></EditText> <EditText android:id="@+id/etAmount" android:layout_width="match_parent" android:layout_height="60dp" android:layout_below="@+id/storePass" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" android:layout_marginBottom="8dp" android:gravity="center" android:hint="Enter amount: default 15 BDT" android:inputType="numberDecimal" android:padding="20dp"></EditText> <EditText android:id="@+id/multiCard" android:layout_width="match_parent" android:layout_height="60dp" android:layout_below="@+id/etAmount" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" android:layout_marginBottom="8dp" android:gravity="center" android:hint="Enter Multi Card" android:inputType="text" android:padding="20dp"></EditText> <CheckBox android:id="@+id/cbEmiEnabled" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/multiCard" android:layout_centerHorizontal="true" android:checked="false" android:text="EMI Enabled" /> <LinearLayout android:id="@+id/layoutCustomerInfo" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/cbEmiEnabled" android:layout_marginTop="16dp" android:orientation="vertical"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_gravity="center_horizontal" android:layout_marginTop="10dp" android:layout_marginBottom="10dp" android:gravity="center_horizontal" android:text="Customer Information" android:textSize="20sp" android:textStyle="bold" /> <androidx.appcompat.widget.AppCompatCheckBox android:id="@+id/cbCustomer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerInParent="true" android:layout_marginRight="16dp" android:checked="true" android:text="Fill" /> </RelativeLayout> <EditText android:id="@+id/etPhone" android:layout_width="match_parent" android:layout_height="60dp" android:layout_below="@id/etAmount" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" android:layout_marginBottom="8dp" android:gravity="center" android:hint="Enter phone" android:inputType="numberDecimal" android:padding="20dp"></EditText> <EditText android:id="@+id/etCustomerName" android:layout_width="match_parent" android:layout_height="60dp" android:layout_below="@+id/etPhone" android:layout_margin="8dp" android:gravity="center" android:hint="Customer Name" android:inputType="text" android:padding="20dp"></EditText> <EditText android:id="@+id/etEmail" android:layout_width="match_parent" android:layout_height="60dp" android:layout_below="@+id/etAmount" android:layout_margin="8dp" android:gravity="center" android:hint="Email" android:inputType="text" android:padding="20dp"></EditText> <EditText android:id="@+id/etAddress" android:layout_width="match_parent" android:layout_height="60dp" android:layout_below="@+id/etPhone" android:layout_margin="8dp" android:gravity="center" android:hint="Address" android:inputType="text" android:padding="20dp"></EditText> <EditText android:id="@+id/etCity" android:layout_width="match_parent" android:layout_height="60dp" android:layout_below="@+id/etPhone" android:layout_margin="8dp" android:gravity="center" android:hint="City" android:inputType="text" android:padding="20dp"></EditText> </LinearLayout> <LinearLayout android:id="@+id/layoutProductInfo" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/layoutCustomerInfo" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="10dp" android:layout_marginBottom="10dp" android:gravity="center_horizontal" android:text="Product Information" android:textSize="20sp" android:textStyle="bold" /> <EditText android:id="@+id/etProductName" android:layout_width="match_parent" android:layout_height="60dp" android:layout_below="@+id/etAmount" android:layout_margin="8dp" android:gravity="center" android:hint="Product Name" android:inputType="text" android:padding="20dp"></EditText> <EditText android:id="@+id/etProductCategory" android:layout_width="match_parent" android:layout_height="60dp" android:layout_below="@+id/etAmount" android:layout_margin="8dp" android:gravity="center" android:hint="Product Category" android:inputType="text" android:padding="20dp"></EditText> <androidx.appcompat.widget.AppCompatSpinner android:id="@+id/spinnerProfile" android:layout_width="match_parent" android:layout_height="60dp" android:layout_marginLeft="16dp" android:layout_marginRight="16dp" android:entries="@array/itemselect" android:theme="@style/CustomSpinnerTheme" android:spinnerMode="dropdown"/> <EditText android:id="@+id/etProductAmount" android:layout_width="match_parent" android:layout_height="60dp" android:layout_below="@+id/spinnerProfile" android:layout_margin="8dp" android:gravity="center" android:hint="Enter product amount" android:inputType="numberDecimal" android:padding="20dp"></EditText> <EditText android:id="@+id/etDiscountAmount" android:layout_width="match_parent" android:layout_height="60dp" android:layout_below="@+id/etProductAmount" android:layout_margin="8dp" android:gravity="center" android:hint="Enter discount amount" android:inputType="numberDecimal" android:padding="20dp"></EditText> </LinearLayout> <LinearLayout android:id="@+id/layoutShippingInfo" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/layoutProductInfo" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="10dp" android:layout_marginBottom="10dp" android:gravity="center_horizontal" android:text="Shipping Information" android:textSize="20sp" android:textStyle="bold" /> <EditText android:id="@+id/etShippingMethod" android:layout_width="match_parent" android:layout_height="60dp" android:layout_below="@+id/etAmount" android:layout_margin="8dp" android:gravity="center" android:hint="Shipping Method" android:inputType="text" android:padding="20dp"></EditText> <EditText android:id="@+id/etShippingItem" android:layout_width="match_parent" android:layout_height="60dp" android:layout_below="@+id/etAmount" android:layout_margin="8dp" android:gravity="center" android:hint="Number Items" android:inputType="numberDecimal" android:padding="20dp"></EditText> <EditText android:id="@+id/etShpiName" android:layout_width="match_parent" android:layout_height="60dp" android:layout_below="@+id/etPhone" android:layout_margin="8dp" android:gravity="center" android:hint="Ship Name" android:inputType="text" android:padding="20dp"></EditText> <EditText android:id="@+id/etShipAddress" android:layout_width="match_parent" android:layout_height="60dp" android:layout_below="@+id/etPhone" android:layout_margin="8dp" android:gravity="center" android:hint="Ship Address" android:inputType="text" android:padding="20dp"></EditText> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/layoutShippingInfo" android:orientation="vertical"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="10dp" android:layout_marginBottom="10dp" android:gravity="center_horizontal" android:text="Additional Information" android:textSize="20sp" android:textStyle="bold" /> <EditText android:id="@+id/etValueA" android:layout_width="match_parent" android:layout_height="60dp" android:layout_below="@+id/etAmount" android:layout_margin="8dp" android:gravity="center" android:hint="ValueA" android:inputType="text" android:padding="20dp"></EditText> <EditText android:id="@+id/etValueB" android:layout_width="match_parent" android:layout_height="60dp" android:layout_below="@+id/etAmount" android:layout_margin="8dp" android:gravity="center" android:hint="ValueB" android:inputType="text" android:padding="20dp"></EditText> <EditText android:id="@+id/etValueC" android:layout_width="match_parent" android:layout_height="60dp" android:layout_below="@+id/etPhone" android:layout_margin="8dp" android:gravity="center" android:hint="ValueC" android:inputType="text" android:padding="20dp"></EditText> <EditText android:id="@+id/etValueD" android:layout_width="match_parent" android:layout_height="60dp" android:layout_below="@+id/etPhone" android:layout_margin="8dp" android:gravity="center" android:hint="ValueD" android:inputType="text" android:padding="20dp"></EditText> <EditText android:id="@+id/etBillNumber" android:layout_width="match_parent" android:layout_height="60dp" android:layout_below="@+id/etPhone" android:layout_margin="8dp" android:gravity="center" android:hint="bill number" android:inputType="text" android:padding="20dp"></EditText> <EditText android:id="@+id/etUserRefer" android:layout_width="match_parent" android:layout_height="60dp" android:layout_below="@+id/etPhone" android:layout_margin="8dp" android:gravity="center" android:hint="user refer" android:inputType="text" android:padding="20dp"></EditText> <EditText android:id="@+id/etCampaignCode" android:layout_width="match_parent" android:layout_height="60dp" android:layout_below="@+id/etPhone" android:layout_margin="8dp" android:gravity="center" android:hint="campaign code" android:inputType="text" android:padding="20dp"></EditText> <EditText android:id="@+id/etInvoiceId" android:layout_width="match_parent" android:layout_height="60dp" android:layout_below="@+id/etPhone" android:layout_margin="8dp" android:gravity="center" android:hint="invoic id" android:inputType="text" android:padding="20dp"></EditText> <EditText android:id="@+id/etNoOffer" android:layout_width="match_parent" android:layout_height="60dp" android:layout_below="@+id/etPhone" android:layout_margin="8dp" android:gravity="center" android:hint="no offer" android:inputType="numberDecimal" android:padding="20dp"></EditText> </LinearLayout> <EditText android:id="@+id/storeID" android:layout_width="match_parent" android:layout_height="60dp" android:layout_below="@+id/radioGroup1" android:layout_margin="8dp" android:gravity="center" android:hint="Default Store Id set but can edit" android:inputType="text" android:padding="20dp"></EditText> <RadioGroup android:id="@+id/radioGroup1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="20dp" android:orientation="horizontal"> <RadioButton android:id="@+id/radio0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true" android:text="Sandbox" /> <RadioButton android:id="@+id/radio1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:text="Live" /> </RadioGroup> </RelativeLayout> </androidx.core.widget.NestedScrollView> <Button android:id="@+id/tv_hello" android:layout_width="match_parent" android:layout_height="60dp" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:background="@color/colorPrimary" android:gravity="center" android:text="Pay Now" android:textColor="@color/white" android:textSize="20sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> </RelativeLayout>