I have a screen that the user changes their data, and as validation I use the setError () to specify which element is with the incorrect value. But I have a problem when I have scrolling on the screen, the setError () message simply overrides ActionBar. I've researched some ways to solve this problem, but none are efficient.
Print the situation
UPDATE
FollowthelayoutI'musing.
<ScrollViewxmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ECEDEE"
android:orientation="vertical">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginRight="10dp"
android:layout_marginBottom="0dp"
android:layout_marginLeft="10dp"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="9dp"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="@drawable/fundocomsombra"
android:gravity="center_horizontal" >
<TextView
android:id="@+id/textCadastroDescricao"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textColor="@color/colorTextGray"
android:gravity="center"
android:textSize="16sp"
android:text="@string/cadastro_descricao" />
</RelativeLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginRight="10dp"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:orientation="vertical"
android:paddingBottom="6dp"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="@drawable/fundocomsombra"
android:gravity="center_horizontal" >
<TextView
android:id="@+id/textCadastroPlaca"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/size12"
android:textColor="@color/colorTextGrayForte"
android:text="@string/cadastro_placa"
android:layout_marginLeft="3dp" />
<EditText
android:id="@+id/editCadastroPlaca"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_marginTop="5dp"
android:textSize="16dp"
android:singleLine="true"
android:maxLength="8"
android:hint="Digite sua placa" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/btProsseguir"
android:paddingTop="11dp"
android:paddingBottom="11dp"
android:background="@layout/fundoverdepressed"
android:layout_marginTop="12dp"
android:layout_marginBottom="12dp">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/cadastro_prosseguir_btn"
android:gravity="center"
android:textColor="@android:color/white"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/llRestoCadastro"
android:orientation="vertical"
android:visibility="gone">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_horizontal_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="@drawable/fundocomsombra"
android:gravity="center_horizontal" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/llOpcoesCadastro"
android:visibility="visible">
<TextView
android:id="@+id/textCadastroNome"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/size12"
android:textColor="@color/colorTextGrayForte"
android:layout_marginLeft="3dp"
android:text="@string/cadastro_nome"
android:visibility="visible" />
<EditText
android:id="@+id/editCadastroNome"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_marginTop="5dp"
android:singleLine="true"
android:visibility="visible"
android:textSize="16dp"
android:hint="Digite seu nome"/>
<TextView
android:id="@+id/textCadastroEstado"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/size12"
android:textColor="@color/colorTextGrayForte"
android:layout_marginTop="10dp"
android:layout_marginLeft="3dp"
android:text="@string/cadastro_estado"
android:visibility="visible" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:layout_marginLeft="-3dp"
android:layout_marginRight="-3dp"
android:gravity="top|left">
<Spinner
android:id="@+id/spinnerCadastroEstado"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:visibility="visible" />
<TextView
android:id="@+id/tvInvisibleEstado"
android:layout_width="2dp"
android:layout_height="2dp"
android:layout_marginTop="10dp"
android:layout_alignRight="@+id/spinnerCadastroEstado"
android:paddingTop="0dp"
android:paddingRight="27dp"
android:focusable="true"
android:focusableInTouchMode="true"/>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="#8C8C8C"
android:layout_marginLeft="4dp"
android:layout_marginRight="2dp"/>
</LinearLayout>
<TextView
android:id="@+id/textCadastroCidade"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/size12"
android:textColor="@color/colorTextGrayForte"
android:layout_marginTop="19dp"
android:layout_marginLeft="3dp"
android:text="@string/cadastro_cidade"
android:visibility="visible" />
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:layout_marginLeft="-3dp"
android:layout_marginRight="-3dp">
<Spinner
android:id="@+id/spinnerCadastroCidade"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:visibility="visible" />
<TextView
android:id="@+id/tvInvisibleCidade"
android:layout_width="2dp"
android:layout_height="2dp"
android:layout_marginTop="10dp"
android:layout_alignRight="@+id/spinnerCadastroCidade"
android:paddingTop="0dp"
android:paddingRight="27dp"
android:focusable="true"
android:focusableInTouchMode="true"/>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="#8C8C8C"
android:layout_marginLeft="4dp"
android:layout_marginRight="2dp"/>
</LinearLayout>
<TextView
android:id="@+id/textCadastroEmail"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/size12"
android:textColor="@color/colorTextGrayForte"
android:layout_marginTop="19dp"
android:layout_marginLeft="3dp"
android:text="@string/cadastro_email"
android:visibility="visible"/>
<EditText
android:id="@+id/editCadastroEmail"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_marginTop="5dp"
android:singleLine="true"
android:textSize="16dp"
android:hint="Digite seu e-mail"
android:inputType="textEmailAddress"
android:visibility="visible"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:id="@+id/llTelefones"/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:orientation="vertical"
android:paddingBottom="10dp"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="10dp"
android:background="@drawable/fundocomsombra"
android:gravity="center_horizontal"
android:id="@+id/llTelefoneAdd">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/addTelefone"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="8">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_action_add"
android:gravity="left"/>
</LinearLayout>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Adicionar telefone"
android:layout_weight="1"
android:layout_marginTop="7dp"/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginRight="10dp"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:orientation="vertical"
android:paddingBottom="5dp"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:background="@drawable/fundocomsombra"
android:gravity="center_horizontal" >
<!-- label e input -->
<TextView
android:id="@+id/textCadastroTipoVeiculo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/size12"
android:textColor="@color/colorTextGrayForte"
android:layout_marginLeft="3dp"
android:text="@string/cadastro_tipoveiculo"
android:visibility="visible" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:layout_marginLeft="-3dp"
android:layout_marginRight="-3dp"
android:gravity="top|left">
<Spinner
android:id="@+id/spinnerCadastroTipoVeiculo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:visibility="visible" />
<TextView
android:id="@+id/tvInvisibleTipo"
android:layout_width="2dp"
android:layout_height="2dp"
android:layout_marginTop="10dp"
android:layout_alignRight="@+id/spinnerCadastroTipoVeiculo"
android:paddingTop="0dp"
android:paddingRight="27dp"
android:focusable="true"
android:focusableInTouchMode="true"/>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="#8C8C8C"
android:layout_marginLeft="4dp"
android:layout_marginRight="2dp"/>
</LinearLayout>
<TextView
android:id="@+id/textCadastroCarroceria"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/size12"
android:textColor="@color/colorTextGrayForte"
android:layout_marginTop="19dp"
android:layout_marginLeft="3dp"
android:text="@string/cadastro_carroceria"
android:visibility="visible" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:layout_marginLeft="-3dp"
android:layout_marginRight="-3dp"
android:gravity="top|left">
<Spinner
android:id="@+id/spinnerCadastroCarroceria"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:visibility="visible" />
<TextView
android:id="@+id/tvInvisibleCarroceria"
android:layout_width="2dp"
android:layout_height="2dp"
android:layout_marginTop="10dp"
android:layout_alignRight="@+id/spinnerCadastroCarroceria"
android:paddingTop="0dp"
android:paddingRight="27dp"
android:focusable="true"
android:focusableInTouchMode="true"/>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="#8C8C8C"
android:layout_marginLeft="4dp"
android:layout_marginRight="2dp"/>
</LinearLayout>
<TextView
android:id="@+id/textCadastroRastreador"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/size12"
android:textColor="@color/colorTextGrayForte"
android:layout_marginTop="19dp"
android:layout_marginLeft="3dp"
android:text="@string/cadastro_rastreador"
android:visibility="visible" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:layout_marginLeft="-3dp"
android:layout_marginRight="-3dp"
android:gravity="top|left">
<Spinner
android:id="@+id/spinnerCadastroRastreador"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:visibility="visible" />
<TextView
android:id="@+id/tvInvisibleRastreador"
android:layout_width="2dp"
android:layout_height="2dp"
android:layout_marginTop="10dp"
android:layout_alignRight="@+id/spinnerCadastroRastreador"
android:paddingTop="0dp"
android:paddingRight="27dp"
android:focusable="true"
android:focusableInTouchMode="true"/>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="#8C8C8C"
android:layout_marginLeft="4dp"
android:layout_marginRight="2dp"/>
</LinearLayout>
<TextView
android:id="@+id/textCadastroMarca"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/size12"
android:textColor="@color/colorTextGrayForte"
android:layout_marginTop="19dp"
android:layout_marginLeft="3dp"
android:text="MARCA"
android:visibility="visible" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="3dp"
android:layout_marginLeft="-3dp"
android:layout_marginRight="-3dp"
android:gravity="top|left">
<Spinner
android:id="@+id/spinnerCadastroMarca"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:visibility="visible" />
<TextView
android:id="@+id/tvInvisibleMarca"
android:layout_width="2dp"
android:layout_height="2dp"
android:layout_marginTop="10dp"
android:layout_alignRight="@+id/spinnerCadastroMarca"
android:paddingTop="0dp"
android:paddingRight="27dp"
android:focusable="true"
android:focusableInTouchMode="true"/>
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<View
android:layout_width="fill_parent"
android:layout_height="1dp"
android:background="#8C8C8C"
android:layout_marginLeft="4dp"
android:layout_marginRight="2dp"/>
</LinearLayout>
<TextView
android:id="@+id/textCadastroSenha1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/size12"
android:textColor="@color/colorTextGrayForte"
android:layout_marginTop="19dp"
android:layout_marginLeft="3dp"
android:text="@string/cadastro_senha1"
android:visibility="visible" />
<EditText
android:id="@+id/editCadastroSenha1"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_marginTop="5dp"
android:inputType="textPassword"
android:singleLine="true"
android:hint="Digite sua senha"
android:textSize="@dimen/size16"
android:fontFamily="@string/abc_search_hint" />
<TextView
android:id="@+id/textCadastroSenha2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="@dimen/size12"
android:textColor="@color/colorTextGrayForte"
android:layout_marginTop="10dp"
android:layout_marginLeft="3dp"
android:text="@string/cadastro_senha2"
android:visibility="visible" />
<EditText
android:id="@+id/editCadastroSenha2"
android:layout_width="fill_parent"
android:layout_height="40dp"
android:layout_marginTop="5dp"
android:inputType="textPassword"
android:singleLine="true"
android:hint="Repita sua senha"
android:textSize="@dimen/size16"
android:fontFamily="@string/abc_search_hint" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/btCadastrar"
android:layout_below="@+id/editCadastroSenha2"
android:paddingTop="11dp"
android:paddingBottom="11dp"
android:background="@layout/fundoverdepressed"
android:layout_marginTop="12dp"
android:layout_marginBottom="12dp"
android:visibility="visible">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/cadastro_btn"
android:gravity="center"
android:textColor="@android:color/white"/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
UPDATE
Well, I could not solve it efficiently, but I thought of a way that worked well.
As I had a ScrollView, then I thought of putting an event in the element to pick up when the user scrolls the screen, so if the user scrolls the scroll, then I will null for everyone the setErrors (), then the error message goes away, not causing the problem of overlapping the ActionBar . The bad thing is that the message will only appear again if the user tries to submit the form with the invalid fields again.
((ScrollView) findViewById(R.id.svGeral)).setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// Pra nao ficar entrando aqui sempre que rolar o scroll
if (errorEnabled) {
errorEnabled = false;
campoNome.setError(null);
campoEmail.setError(null);
campoSenha1.setError(null);
campoSenha2.setError(null);
// Remove alertas telefones
for (int et = 0; et < telefones.size(); et++) {
telefones.get(et).getEtTelefone().setError(null);
telefones.get(et).getTvInvisibleTipoTelefone().setError(null);
telefones.get(et).getTvInvisibleOperadoraTelefone().setError(null);
}
}
return false;
}
});
If someone has a better way to solve this problem, let's have a look.
Thanks!