android - studio - cambiar texto de un textview desde activity
AƱadir restricciones de entrada para editar texto en Android? (1)
Tengo una condición donde se requiere ingresar algunos valores numéricos en la aplicación.
Casos:
Si el usuario ingresa un número entero, entonces la longitud máxima debe ser de 8 dígitos. Ej .: 12345678
Si los usuarios quieren ingresar valores decimales, solo pueden ingresar hasta 2 decimales. Ej .: 1.03, 123.95
Si los usuarios ingresan 8 dígitos enteros, también pueden ingresar los decimales hasta 2 decimales. Ej .: 12345678.12
Entonces tenemos las siguientes entradas válidas:
1. 12345678
2. 123.45
3. 12345678.98
¿Cómo puedo lograr el escenario de caso anterior?
Aqui tienes. Esto es exactamente lo que quieres...
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.InputFilter;
import android.text.Spanned;
import android.text.TextWatcher;
import android.util.Log;
import android.widget.EditText;
public class EditTextLogic extends Activity
{
EditText mEditText;
String TEMP="",INPUT="";
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.edit_tesxt_logic);
mEditText =(EditText) findViewById(R.id.textView1);
mEditText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,int arg3) {}
@Override
public void afterTextChanged(Editable Token)
{
if(Token.toString().length()<INPUT.length())
{
INPUT=Token.toString();
}
}
});
mEditText.setFilters(new InputFilter[] {
new InputFilter() {
@Override
public CharSequence filter(CharSequence input, int arg1,
int arg2, Spanned arg3, int arg4, int arg5)
{
CharSequence returned = validate(input.toString());
return returned;
}
}
});
}
private CharSequence validate(String Token) {
Log.i("Token",""+Token);
TEMP = INPUT;
TEMP += Token;
if(TEMP.contains("."))
{
try
{
String FractionNo = TEMP.split("//.")[1];
if(FractionNo.length()> 2)
{
return "";
}
else
{
INPUT = TEMP;
return Token;
}
}
catch(ArrayIndexOutOfBoundsException e)
{
INPUT = TEMP;
return Token;
}
}
else
{
if(TEMP.length()>8)
{
return "";
}
else
{
INPUT = TEMP;
return Token;
}
}
}
}
Y este es tu XML:
<EditText
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:singleLine="true"/>
¡Aclamaciones! Disfruta Codificacion !!