Ir para o proximo focus no edittext? [RESOLVIDO]

9 respostas
A

Pessoal,

Boa tarde

Como faço para ir para o proximo edit setfocus?

Desculpe perguntas básicas, mais estou aprendendo agora java e tenho algumas duvidas.

Resumindo, se eu tiver no edittext1 quero que ao apertar o botão entrar no edittext2, se eu tiver no edittex2 apertar o botão entrar no edittext3.

Fiz um esquema de pintar o Linearlayout quando o edit recebe o focus
// como defalut vem com a cor azul
		dados_cliente.setBackgroundColor(Color.parseColor("#6495ED"));
		
		// configurações conforme o focus do edit
		edt_cliente.setOnFocusChangeListener(new OnFocusChangeListener() {
			public void onFocusChange(View v, boolean hasFocus) {
				if (hasFocus) {
					dados_cliente.setBackgroundColor(Color
							.parseColor("#6495ED"));
				} else {
					edt_cliente.clearFocus();					
					dados_cliente.setBackgroundColor(Color.TRANSPARENT);
				}
			}
		});

		edt_profissional.setOnFocusChangeListener(new OnFocusChangeListener() {
			public void onFocusChange(View v, boolean hasFocus) {
				if (hasFocus) {
					dados_profissional.setBackgroundColor(Color
							.parseColor("#6495ED"));
				} else {
					edt_profissional.clearFocus();					
					dados_profissional.setBackgroundColor(Color.TRANSPARENT);
				}
			}
		});
		
		edt_item.setOnFocusChangeListener(new OnFocusChangeListener() {
			public void onFocusChange(View v, boolean hasFocus) {
				if (hasFocus) {
					dados_item.setBackgroundColor(Color
							.parseColor("#6495ED"));
				} else {
					edt_item.clearFocus();					
					dados_item.setBackgroundColor(Color.TRANSPARENT);
				}
			}
		});
		
		edt_quantidade.setOnFocusChangeListener(new OnFocusChangeListener() {
			public void onFocusChange(View v, boolean hasFocus) {
				if (hasFocus) {
					dados_quantidade.setBackgroundColor(Color
							.parseColor("#6495ED"));
				} else {
					edt_quantidade.clearFocus();					
					dados_quantidade.setBackgroundColor(Color.TRANSPARENT);
				}
			}
		});
		
		edt_desconto.setOnFocusChangeListener(new OnFocusChangeListener() {
			public void onFocusChange(View v, boolean hasFocus) {
				if (hasFocus) {
					dados_desconto.setBackgroundColor(Color
							.parseColor("#6495ED"));
				} else {
					edt_desconto.clearFocus();						
					dados_desconto.setBackgroundColor(Color.TRANSPARENT);
				}
			}
		});
		
		edt_ajuste.setOnFocusChangeListener(new OnFocusChangeListener() {
			public void onFocusChange(View v, boolean hasFocus) {
				if (hasFocus) {
					dados_ajuste.setBackgroundColor(Color
							.parseColor("#6495ED"));
				} else {
					edt_ajuste.clearFocus();				
					dados_ajuste.setBackgroundColor(Color.TRANSPARENT);
				}
			}
		});
		
		edt_assistente.setOnFocusChangeListener(new OnFocusChangeListener() {
			public void onFocusChange(View v, boolean hasFocus) {
				if (hasFocus) {
					dados_assistente.setBackgroundColor(Color
							.parseColor("#6495ED"));
				} else {
					edt_assistente.clearFocus();					
					dados_assistente.setBackgroundColor(Color.TRANSPARENT);
				}
			}
		});

Então quando apernat no botão confirmar ir para o proximo edit e executar este codigo acima, que ja esta funcionando.

Obrigado pela atenção.

9 Respostas

Marky.Vasconcelos
findViewById(R.id.email).setNextFocusDownId(R.id.password);
        if(DeviceInfo.isHoneycombOrHigher())
            findViewById(R.id.email).setNextFocusForwardId(R.id.password);

Esse check para Honeycomb é por que para versões mais recentes do Android existe o nextFocusForward.

A

Olá Marky, na verdade seria algo simples, se eu tiver no foco de um edit passar para o outro atraves da ação do onclick de um button

Não sei como é feito isso

tentei assim
// chama a tela de confirmação
		bt_confirma.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {							
				
				edt_cliente.setNextFocusDownId(edt_profissional.getId());
				edt_profissional.setNextFocusDownId(edt_item.getId());		
				
			}
		});

Mais nãoda de pular para o proximo focus. Vi este codigo na net.

Obrigado.

Marky.Vasconcelos
view.requestFocus();
A

Marky.Vasconcelos:
view.requestFocus();

Estou tentando fazer isso, mais não esta dando certo, não esta pulando para o proxuimo focus do edittex

// chama a tela de confirmação bt_confirma.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { v.requestFocus(); } });

Obrigado.

Marky.Vasconcelos

O v do onClick é a propria View que disparou o evento, no caso voce está requestando o foco nele mesmo.

faça algo como:

bt_confirma.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
terceiroCampo.requestFocus();
}
}
A

Marky.Vasconcelos:
O v do onClick é a propria View que disparou o evento, no caso voce está requestando o foco nele mesmo.

faça algo como:

bt_confirma.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ terceiroCampo.requestFocus(); } }

Olá, isso ai foi algo que tentei desde o inicio

// chama a tela de confirmação bt_confirma.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { edt_profissional.requestFocus(); } });

Mais não muda o foco para o segundo edittext, além do mais preciso de algo que saiba quando o edit que esta em foco para ir para o proximo edit, assim desta forma mesmo se funcionasse não daria para usar porque limitei apenas para o edt_profissional o focus.

Muito obrigado.

Marky.Vasconcelos

Tem as flags focusableOnTouchMode, mas por padrão TextView são true.

Já usei o requestFocus e funcionou como eu disse.

Se voce quer pelo OK ou NEXT no teclado precisa ser pelo nextForwardId ou nextFocusDownId.

A

Marky.Vasconcelos:
Tem as flags focusableOnTouchMode, mas por padrão TextView são true.

Já usei o requestFocus e funcionou como eu disse.

Se voce quer pelo OK ou NEXT no teclado precisa ser pelo nextForwardId ou nextFocusDownId.

Sim consegui fazer funcionar

// chama a tela de confirmação letras bt_confirma.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { if (edt_cliente.isFocused()) { edt_profissional.requestFocus(); edt_cliente.clearFocus(); } else if (edt_profissional.isFocused()) { edt_item.requestFocus(); edt_profissional.clearFocus(); } } });
E esta funcionando…

Mais tem um problema, preciso que esta função seja false

Ai não funciona, alguma idéia?

Obrigado.

A

Descubri, agora sim esta dando certo

public void setFocusEdit() {
		if (edt_cliente.isFocused()) {
			edt_profissional.setFocusableInTouchMode(true);
			edt_profissional.requestFocus();
			edt_cliente.clearFocus();
			edt_cliente.setFocusableInTouchMode(false);
			
		} else if (edt_profissional.isFocused()) {
			edt_item.setFocusableInTouchMode(true);
			edt_item.requestFocus();
			edt_profissional.clearFocus();
			edt_profissional.setFocusableInTouchMode(false);
			
		} else if (edt_item.isFocused()) {
			edt_quantidade.setFocusableInTouchMode(true);
			edt_quantidade.requestFocus();
			edt_item.clearFocus();
			edt_item.setFocusableInTouchMode(false);
			
		} else if (edt_quantidade.isFocused()) {
			edt_desconto.setFocusableInTouchMode(true);
			edt_desconto.requestFocus();
			edt_quantidade.clearFocus();
			edt_quantidade.setFocusableInTouchMode(false);
		
		} else if (edt_desconto.isFocused()) {
			edt_ajuste.setFocusableInTouchMode(true);
			edt_ajuste.requestFocus();
			edt_desconto.clearFocus();
			edt_desconto.setFocusableInTouchMode(false);
		
		} else if (edt_ajuste.isFocused()) {
			edt_assistente.setFocusableInTouchMode(true);
			edt_assistente.requestFocus();
			edt_ajuste.clearFocus();
			edt_ajuste.setFocusableInTouchMode(false);
		
		} else if (edt_assistente.isFocused()) {
			edt_cliente.setFocusableInTouchMode(true);
			edt_assistente.clearFocus();
			edt_assistente.setFocusableInTouchMode(false);
		}
		
		
	}

Obrigado.

Criado 7 de dezembro de 2012
Ultima resposta 11 de dez. de 2012
Respostas 9
Participantes 2