Country Code Piker

 Añadiendo un country Code piker 

Lo primero que se va utilizar es una implementación en el gradel del proyecto y lo sincronizamos

implementation 'com.hbb20:ccp:2.6.0'

También lo pueden buscar en google como country code picker android github 

xml

El siguiente código va en el dialogo de login y reemplaza al spiner 
<com.hbb20.CountryCodePicker
android:id="@+id/CodeCountry"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:ccp_textSize="18sp"
app:ccp_arrowColor="@color/white"
app:ccp_contentColor="@color/white"
app:ccp_defaultLanguage="SPANISH"
app:ccp_autoDetectCountry="true"
android:background="@drawable/btn_neutral"
app:ccpDialog_textColor="@color/white"
app:ccpDialog_background="@color/colorBron500" />

java

A continuación le hacemos los siguiente cambio en el MainActivity.java y quitamos el código que ya no usaremos

Declaramos al inicio 

CountryCodePicker mCodeCountry;
AppCompatTextView mTextViewPhone;
AppCompatEditText mEditTextPhone;
AppCompatButton buttonLogIn,mButtonPrevious,mButtonNext;
String numPhone="",codeCountry="",Phone="";


Cambiamos el codigo del dialog logIn añadiendo lo del date country piker

private void DialogLogIn() {
Dialog dialog = new Dialog(MainActivity2.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.dialog_login);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));

mCodeCountry=dialog.findViewById(R.id.CodeCountry);
mEditTextPhone=dialog.findViewById(R.id.EditTextPhone);mEditTextPhone.setText(Phone);

mButtonPrevious=dialog.findViewById(R.id.ButtonPrevious);
mButtonPrevious.setOnClickListener(view -> dialog.dismiss());

mButtonNext=dialog.findViewById(R.id.ButtonNext);
mButtonNext.setOnClickListener(view -> {
if (Objects.requireNonNull(mEditTextPhone.getText()).toString().trim().equalsIgnoreCase("")) {
Toast.makeText(MainActivity2.this,"Campos Vacios"+Phone,Toast.LENGTH_SHORT).show();
} else if(!(mEditTextPhone.getText().toString().length() >8 && mEditTextPhone.getText().toString().length() <20)){
Toast.makeText(MainActivity2.this,"Debe ser un número de telefono valido ",Toast.LENGTH_SHORT).show();
}else {
SaveDate();
DialogPin();
dialog.dismiss();
}
});

dialog.setCancelable(false);
dialog.show();
}

Tambien reemplazamos el metodo Save Date

public void SaveDate(){
codeCountry=mCodeCountry.getSelectedCountryCodeWithPlus();
Phone= Objects.requireNonNull(mEditTextPhone.getText()).toString();
numPhone=codeCountry+Phone;
}


por ultimo el código de del dialog_pin ya que también se realizo cambios lo volvemos a copiar y pegar.

xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
xmlns:tools="http://schemas.android.com/tools"
android:layout_gravity="center"
app:cardElevation="3dp"
app:cardUseCompatPadding="true"
app:cardCornerRadius="20dp">

<androidx.appcompat.widget.LinearLayoutCompat
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">

<androidx.appcompat.widget.AppCompatTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"
android:textSize="24sp"
android:layout_marginHorizontal="60dp"
android:layout_marginVertical="10dp"
android:text="@string/code" />

<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/textViewPhone"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/number_phone"
android:layout_marginHorizontal="20dp"/>

<androidx.appcompat.widget.AppCompatEditText
android:id="@+id/editTextNumber"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:textSize="24sp"
android:gravity="center"
android:ems="4"
android:inputType="numberPassword"
tools:ignore="SpeakableTextPresentCheck,TouchTargetSizeCheck" />

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">

<androidx.appcompat.widget.AppCompatButton
android:id="@+id/ButtonPreviousPin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:foreground="?android:attr/selectableItemBackground"
android:background="@drawable/btn_left"
android:text="@string/previous"
tools:ignore="TextContrastCheck,UnusedAttribute" />

<View
android:layout_width="1dp"
android:layout_height="20dp"/>

<androidx.appcompat.widget.AppCompatButton
android:id="@+id/ButtonNextPin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:foreground="?android:attr/selectableItemBackground"
android:background="@drawable/btn_right"
android:text="@string/next"
tools:ignore="TextContrastCheck,UnusedAttribute" />
</LinearLayout>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.cardview.widget.CardView>


java

@SuppressLint("SetTextI18n")
private void DialogPin() {
Dialog dialog = new Dialog(MainActivity2.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.dialog_pin);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));

mTextViewPhone=dialog.findViewById(R.id.textViewPhone);
mTextViewPhone.setText(getText(R.string.number)+" "+numPhone);

mButtonPrevious=dialog.findViewById(R.id.ButtonPreviousPin);
mButtonPrevious.setOnClickListener(view -> {

DialogLogIn();
dialog.dismiss();
});

mButtonNext=dialog.findViewById(R.id.ButtonNextPin);
mButtonNext.setOnClickListener(view -> {
if (!Objects.requireNonNull(mEditTextPhone.getText()).toString().trim().equalsIgnoreCase("")) {
//Intent
dialog.dismiss();
} else {
Toast.makeText(MainActivity2.this,"Campos Vacios",Toast.LENGTH_SHORT).show();
}
});

dialog.setCancelable(false);
dialog.show();
}






Comentarios