viewpager - tabs in fragment android
El menú desplegable de webview de Android no funciona en dispositivos Android 4.x (5)
Tengo un problema con uno de mis dispositivos WebView
en Android 4.x.
La aplicación de Android tiene un Tabhost que contiene Fragmentos . Uno de los fragmentos contiene una vista web. La página mostrada tiene un menú desplegable como este:
<select id="mySelect" name="mySelect">
<option value="1">Testname 1</option>
<option value="2">Testname 2</option>
<option value="3">Testname 3</option>
</select>
Ahora, cuando abro mi aplicación con un Galaxy S3 con Android 4.1.1 (o cualquier otro dispositivo Android que pueda tener en mis manos) puedo seleccionar "Testname 1", luego "Testname 2" y así sucesivamente.
En el Galaxy Nexus (confirmado en diferentes dispositivos con Android 4.1.1, 4.1.2 y 4.2) cuando intento seleccionar algo que la interfaz de usuario simplemente bloquea. Después de cambiar a otra pestaña y volver a la pestaña webview, de repente, la interfaz de usuario finalmente cambia al elemento seleccionado previamente.
¿Alguna idea de qué está causando esto o cómo puedo arreglar esto para el Galaxy Nexus?
Actualización importante: podría rastrear esto hasta el Tabhost
. Cuando la vista webview
está en el tabhost
, no funciona, cuando no está, funciona. Esto podría estar relacionado con este problema .
Después de seleccionar la selección, los datos del elemento de la lista pueden cambiar, pero no podemos ver el cambio. para esto necesitamos actualizar explícitamente el componente seleccionado. Espero que esto pueda resolver el problema.
$("select#HeightUnit option[value=''cm'']").attr("selected", "selected"); $(''select'').selectmenu(''refresh'');
En realidad, puedes hacer más con ActionBar que solo con un TabHost. Incluyendo pestañas. link te permitirá implementar ActionBar en versiones anteriores. minSdk = 4. La mayoría de los desarrolladores de Experiencia de usuario con los que he trabajado piensan que las pestañas son algo pasadas, aunque proporcionan una interfaz de usuario familiar para los usuarios, pero ¿quién soy yo para oponerme? ¿el viento? La barra de acción proporciona una apariencia muy específica de Android y una sensación de limpieza a la interfaz de usuario. link es la documentación sobre los patrones de IU recomendados de Google de esa conferencia. link es el video de YouTube que describe los patrones de IU de la conferencia. Seguir estas recomendaciones puede proporcionar una mejor revisión de su aplicación y una interfaz de usuario más sofisticada. No estoy seguro de cuáles son sus necesidades, pero si va a hacer algo, ¿podría hacerlo bien? Si necesita más ayuda por favor hágamelo saber. Te puedo dar ejemplos sobre el uso de la barra de acción. El enlace de la barra de acción puede darte algunas razones mejores por las que puedo, es una buena opción para la interfaz de usuario.
¿Estás implementando tus fragmentos correctamente? link es la documentación sobre su uso. Si está utilizando fragmentos dinámicos en lugar de fragmentos fijos implementados en el diseño, un truco que encontré al escribir en todas las aplicaciones es llamar a .clearBackStack (); cuando estoy teniendo problemas divertidos y parece solucionar muchos problemas.
Intente usar esta clase personalizada en su diseño XML en lugar del TabHost normal:
package com.example.test;
import android.content.Context;
import android.util.AttributeSet;
import android.widget.TabHost;
public class TabHostFix extends TabHost
{
public TabHostFix(Context context)
{
super(context);
}
public TabHostFix(Context context, AttributeSet attrs)
{
super(context, attrs);
}
@Override
public void onTouchModeChanged(boolean isInTouchMode)
{
//do not call through to base class, do nothing
//this is a fix for tabhost stealing focus from textboxes
}
}
Haga referencia a la clase personalizada en su diseño XML de esta manera:
<?xml version="1.0" encoding="utf-8"?>
<com.example.test.TabHostFix xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TabWidget
android:id="@android:id/tabs"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_weight="0"/>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="0" />
<FrameLayout
android:id="@+android:id/realtabcontent"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
</com.example.test.TabHostFix>
EDITAR: Como solución alternativa, puede reemplazar TabHost completamente usando ViewPager de la biblioteca de soporte y un indicador de View Pager personalizado que imita las pestañas. Nunca he intentado esto antes, pero he leído que aquí hay buenos indicadores de buscapersonas gratuitos de terceros.
TabHost en ICS? ¿Está utilizando el paquete de compatibilidad? El diseño adecuado sería utilizar la barra de acción para implementar las pestañas si está trabajando básicamente en 3.1+.
> i think u must add the API version on your activity cause some UI cannot compatible on >android API 8. so check the API SDK like this.
>@TargetApi(Build.VERSION_CODES.GINGERBREAD)
>if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD)
>{
>// condisition
>}