Mój problem polega na tym, że komunikat o błędzie w moich EditTextach przewija się nad paskiem akcji. Czy to jest błąd Androida, czy robię coś złego?Wiadomość Android setError() przewijanie na ActionBar
Również ten błąd występuje nawet wtedy, gdy klawiatura jest wyłączona, po prostu znajduje się na zrzutach ekranu.
Oto co mówię: http://imgur.com/fG8bd3E,uFzhOXa#1 < - istnieją dwa obrazy
Oto mój układ, dodam EditTexts w moim kodu do kiosk_form_table LinearLayout
<ScrollView
style="@style/DefaultBackground"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="0.6"
android:fadeScrollbars="false"
android:padding="20dp" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingRight="20dp" >
<LinearLayout
android:id="@+id/kiosk_form_table"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" />
<Button
android:id="@+id/kiosk_submit_large"
style="@style/LoginButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:onClick="submit"
android:text="@string/submit" />
</LinearLayout>
</ScrollView>
Jak dodać EditTexts
kiosk_form.addView(getKioskRow(R.layout.kiosk_text_row, "First Name", true, null));
private View getKioskRow(int layout, String header, boolean required, String buttonName)
{
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(layout, null);
view.setTag(required);
addHeader((TextView) inflater.inflate(R.layout.field_header, null), header);
if (required)
((TextView) view.findViewById(R.id.kiosk_input)).setHint("Required");
if (buttonName != null)
((Button) view.findViewById(R.id.kiosk_input_button)).setText(buttonName);
return view;
}
private void addHeader(TextView view, String header)
{
view.setTag(false);
view.setText(header);
kiosk_form.addView(view);
}
Jak ustawić błąd
(TextView) view).setError(getString(R.string.error_field_required));
Chcę, aby moje komunikaty o błędach pojawiały się w różnych widokach, które są podklasą TextView, więc jeśli spojrzysz na mój ostatni fragment kodu, dodaję komunikat o błędzie do moich widoków, z których niektóre to teksty do edycji. Mój problem nie polega na tym, że błąd się nie pojawia. Mój błąd polega na tym, że kiedy przewijam, wyskakująca wiadomość pojawia się na pasku akcji widocznym w moim linku imgur (jestem nowy w społeczności, więc nie mam wystarczającej reputacji, aby osadzić link). – Sagar
Ohhh ok, rozumiem. Oto jedno z możliwych rozwiązań: możesz ukryć komunikat o błędzie, gdy użytkownik przewija widok. Po zakończeniu przewijania można ponownie ustawić komunikat o błędzie i powinien pojawić się we właściwym miejscu! Oto, jak można wykryć zakończenie przewijania: http://stackoverflow.com/questions/2089552/android-how-to-detect-when-a-scroll-has-ended – Oleksiy
Hmm, widzę, że działa. Po prostu z ciekawości wiesz, że szybko wyłączyć wszystkie komunikaty o błędach, lub jeśli jest to nawet możliwe. Pytam, ponieważ w tej chwili przeglądam dużą liczbę widoków, aby wypełnić ten formularz i chciałbym uniknąć zapętlenia listy, aby wyłączyć komunikaty o błędach za każdym razem, gdy użytkownik przewija. Bez względu na podziękowania za pomoc! – Sagar