requestfocus - Android: cabeSistemaSistemas de Windows no funciona
textview en android (4)
Lo más probable es que mi problema estuviera relacionado con los atributos de fitsSystemWindows
múltiples / anidados que no funcionan como descubrí más adelante. Resolví mi problema aplicando el atributo a una vista, y luego copio los rellenos a otras vistas que los necesitan a través de un ViewTreeObserver.OnGlobalLayoutListener
. Es un truco feo, pero hace su trabajo por ahora.
En mi tema, definí las siguientes reglas para dibujar mis vistas detrás de la barra de estado:
<item name="android:statusBarColor">@android:color/transparent</item>
<item name="android:windowDrawsSystemBarBackgrounds">true</item>
Y en la Actividad (onCreate):
getWindow.getDecorView.setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE |
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
)
Luego, en mi Vista, estoy usando un Barcodescanner que se supone debe dibujar detrás de la barra de estado, que está funcionando. Sin embargo, cuando aplico el android:fitsSystemWindows
a cualquier vista infantil, no se ajusta su posición. Sin embargo, funciona cuando lo aplico al elemento raíz.
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<my.Scanner
android:id="@+id/scanner"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<FrameLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"> <!-- Should receive a top padding, right? -->
<View android:layout_width="50dp"
android:layout_height="50dp"
android:background="@color/red" />
</FrameLayout>
</FrameLayout>
Me encuentro con el mismo problema en Android 4.4
Mi problema es <item name="android:windowTranslucentStatus">true</item>
conflicto con <item name="android:fitsSystemWindows">true</item>
Mi camino es eliminar <item name="android:windowTranslucentStatus">true</item>
Para mí, el problema fue que el teclado oculta un campo de edición de texto que se coloca al final de la actividad. He probado todas las soluciones y nada funciona. Estaba usando este código antes de la llamada al método setContentView()
para hacer transparente la barra de estado:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
Window w = getWindow(); // in Activity''s onCreate() for instance
w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}
Lo quité y también quité android:windowSoftInputMode="adjustResize|adjustPan" from the maneifest
archivo android:windowSoftInputMode="adjustResize|adjustPan" from the maneifest
y ahora funciona.
Use CoordinatorLayout como raíz para su vista, funcionó para mí.
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">