CoordinatorLayout scompiglia la posizione di popup setError

Mi trovo ad affrontare un problema con la EditText popup setError EditText .

Modifica errore di testo

  • Come posso visualizzare il valore corrente di una preferenza Android nel riepilogo delle preferenze?
  • Come build un'applicazione android con librerie esterne utilizzando antica?
  • Gli events test non sono stati ricevuti - Android Studio
  • Mappa marker con text in Google Maps Android API v2
  • Android TableLayout Width
  • Come posso visualizzare l'Album Art utilizzando MediaStore.Audio.Albums.ALBUM_ART?
  • Utilizzo il seguente codice per creare il layout:

    activity_profile.xml

     <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context=".ProfileActivity" android:orientation="vertical"> <android.support.design.widget.AppBarLayout android:layout_height="wrap_content" android:layout_width="match_parent" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.AppBarLayout> <include layout="@layout/profile" /> </android.support.design.widget.CoordinatorLayout> 

    profile.xml

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context=".ProfileActivity" tools:showIn="@layout/activity_profile"> <EditText android:id="@+id/etProfileName" android:layout_width="match_parent" android:layout_height="50dp" android:capitalize="words" android:hint="@string/et_hint_profile_name" android:textAlignment="center" /> </RelativeLayout> 

    Quello che ho provato

    Se cambio l' android.support.design.widget.CoordinatorLayout con LinearLayout il problema setError non accadrà, ma che cambierà il colore della barra di stato in bianco e il mio UI sta cercando strano.

    Corretto, rilascio della barra di stato

    Sono nuovo alla programmazione di Android e non so cosa sta succedendo, ti prego di aiutarmi.

  • Deserializzazione di Gson di List <String> in realmList <RealmString>
  • Android IntentService non si avvia dopo l'avvio
  • Controllo degli abbonamenti google android dal lato server
  • Puoi sparare un evento quando il dialogo Android viene licenziato?
  • android KitKat image Ritaglio
  • Android CursorLoader
  • 4 Solutions collect form web for “CoordinatorLayout scompiglia la posizione di popup setError”

    Quello che ha funzionato per me è un ulteriore LinearLayout in activity_main.xml (sì, lì):

     <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activityRoot" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context="com.example.biptest.MainActivity"> <!-- *** THIS ONE *** --> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/appbar" android:theme="@style/AppTheme.AppBarOverlay"> <android.support.v7.widget.Toolbar android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" /> </android.support.design.widget.AppBarLayout> <include layout="@layout/content_main" /> <!-- FRAGMENT(S) INSIDE --> </LinearLayout> <!-- *** BUT LEAVE THE FAB ALONE *** --> <android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margin" android:src="@android:drawable/ic_dialog_email" android:visibility="gone" /> </android.support.design.widget.CoordinatorLayout> 

    Questo funziona anche intorno al bug di layout che viene mostrato quando si triggers la visibilità di una vista in un frammento.

    E il problema successivo sono i messaggi di errore bianchi su bianco nel popup su Android 2.x ( link )

    Ho avuto lo stesso problema. Testando un po 'l'interface utente, ho scoperto che il problema è apparso quando il widget EditText ottiene il focus programmaticamente per mostrare l'errore, nel mio caso chiamando .requestFocus() , ma quando si concentra manualmente sul widget, il popup appariva correttamente.

    Quindi la mia soluzione era ritardare la chiamata a .requestFocus() in un Runnable (simulando un utente facendo clic sul widget EditText).

    Ecco il codice:

      if (mFocusView != null) mFocusView.clearFocus(); // clear current focus. Needed to simulate a new "manual" focus getActivity().runOnUiThread(new Runnable() { @Override public void run() { final Handler handler = new Handler(); final boolean b = handler.postDelayed(new Runnable() { @Override public void run() { mFocusView.requestFocus(); // request focus } }, 1); // only delay 1 milisecond } }); 

    mFocusView è la vista corrente EditText per mostrare un errore.

    A seconda del caso di utilizzo, potrebbe essere necessario gestire l'attenzione quando la tastiera viene rimossa, in quanto rende il popup visualizzato nuovamente nella posizione sbagliata.

    Non so se questo risolverà il tuo problema. Spero che aiuta mentre Google risolve questo problema.

    Questo era un bug Android e ora è fisso.

    Riferimento: https://code.google.com/p/android/issues/detail?id=193793

    In realtà, il problema non è il CoordinatorLayout , ma AppBarLayout.ScrollingViewBehavior . Come una semplice soluzione, è ansible rimuovere l' app:layout_behavior="@string/appbar_scrolling_view_behavior" line app:layout_behavior="@string/appbar_scrolling_view_behavior" e aggiungere android:layout_marginBottom="?attr/actionBarSize" alla vista nidificata se non è necessario scorrere nidificato.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.