studio - autocompletar teclado android
Deshabilitar el servicio de autocompletado de Android O para una aplicaciĆ³n (8)
Es posible ?
No que yo sepa. Ciertamente, nada está documentado.
¿Hay algún método mejor que este?
No que yo sepa.
Android O tiene la función de admitir Auto-filling campos. ¿Hay alguna manera de que pueda desactivarlo para una aplicación específica. Es decir, quiero forzar a mi aplicación a no utilizar el servicio de autocompletar.
Es posible ?
Para bloquear el autocompletado de una actividad completa, use esto en onCreate () de la actividad:
getWindow()
.getDecorView()
.setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS);
¿Hay algún método mejor que este?
Actualmente no hay una forma directa de deshabilitar el llenado automático para una aplicación completa, ya que la función de llenado automático es específica de la Vista.
Todavía puedes intentarlo de esta manera y llamar a BaseActivity en todas partes .
public class BaseActivity extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
disableAutoFill();
}
@TargetApi(Build.VERSION_CODES.O)
private void disableAutoFill() {
getWindow().getDecorView().setImportantForAutofill(View.IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS);
}
}
También puede forzar la solicitud de autocompletar de esta manera.
public void forceAutofill() {
AutofillManager afm = context.getSystemService(AutofillManager.class);
if (afm != null) {
afm.requestAutofill();
}
}
Nota: en este momento, la función de autocompletar solo está disponible en API 26 Android Oreo 8.0
¡Espero que esto ayude!
Con referencia al rastreador de problemas de Google , se ha corregido.
Esto está arreglado en Android 8.1
Si el problema persiste, informe al rastreador de problemas de Google que volverán a abrir para examinarlo.
Cree un estilo personalizado de edición de texto y configure android:importantForAutofill
en no
.
<style name="EditTextStyleWithoutAutoFill" parent="Widget.AppCompat.EditText">
<item name="android:importantForAutofill">no</item>
</style>
Luego, en su tema de actividad, establezca este estilo para editTextStyle.
<item name="android:editTextStyle">@style/EditTextStyleWithoutAutoFill</item>
Creo que la respuesta aceptada es incorrecta:
Así que tengo mi propia clase que extiende el android.support.v7.widget.AppCompatEditText y todo lo que hice fue sobrescribir el siguiente método con el siguiente valor:
@Override
public int getAutofillType() {
return AUTOFILL_TYPE_NONE;
}
ninguna otra solución funcionó, ni siquiera android: importantForAutofill = "no".
getAutofillType () proviene de la clase View, por lo que también debería funcionar para todas las demás clases, como TextInputEditText.
En sus atributos de Editar texto, agregue android:importantForAutofill="no"
Esto debería ser una solución temporal y solo se aplicará a la API 26+
Me encontré con esto también. Resulta que el problema se debió al establecer el texto de la sugerencia en el EditText anidado dentro de TextInputLayout.
Hice algunas excavaciones y encontré este nugget en las notas de la versión 26.0.0 Beta 2. Notas de la versión de soporte de Andorid junio 2017
TextInputLayout debe establecer sugerencias en onProvideAutofillStructure ()
Eso me llevó a intentar configurar la sugerencia en TextInputLayout en lugar de EditText anidado.
Esto resolvió el problema de colisión para mí. Ejemplo:
<android.support.design.widget.TextInputLayout
android:id="@+id/textInputLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="Some Hint Text"
android.support.design:hintAnimationEnabled="true"
android.support.design:hintEnabled="true"
android.support.design:layout_marginTop="16dp">
<android.support.design.widget.TextInputEditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>
</android.support.design.widget.TextInputLayout>
Parece ser un error que debe solucionarse: issuetracker.google.com/issues/67675432
Mientras tanto, una solución por ahora es deshabilitar la función Autocompletar para todo el proyecto. Puede agregar en el archivo values-v26/styles.xml
el siguiente estilo o puede editar su BaseEditTextStyle si está usando un estilo específico para sus vistas EditText.
<style name="App_EditTextStyle" parent="@android:style/Widget.EditText">
<item name="android:importantForAutofill">noExcludeDescendants</item>
</style>
y en el archivo values-v26/themes.xml
puede simplemente agregar al tema predeterminado que está utilizando en su aplicación los elementos editTextStyle
y android:editTextStyle
como los siguientes:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
...
<item name="android:editTextStyle">@style/App_EditTextStyle</item>
<item name="editTextStyle">@style/App_EditTextStyle</item>
</style>
De esta forma, puede aplicar estos cambios a todos sus EditTexts sin necesidad de cambiar sus archivos de diseño o Actividades (y más adelante puede eliminarlos fácilmente cuando se solucione el error).