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
[code]// 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);
}
}
});[/code]
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.
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.
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
[code]// 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());
}
});[/code]
Mais nãoda de pular para o proximo focus. Vi este codigo na net.
Obrigado.
[quote=Marky.Vasconcelos]
view.requestFocus();
[/quote]
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.
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();
}
}
[quote=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();
}
}
[/quote]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.
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.
[quote=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.[/quote]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.
Descubri, agora sim esta dando certo
[code]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);
}
}[/code]
Obrigado.