Tamaño WebView

Consultas técnicas sobre programación en Android

Tamaño WebView

Notapor Ruben » 08 May 2012, 15:18

Hola!

Primeramente decir que soy nuevo en la comunidad y en general con la programación para la plataforma de Android.

En mi camino de aprendizaje, me he topado con un problema que no consigo solucionar. Si bien, he leído muchos manuales layers, tab layout, relative layout, frame layout etc.. No consigo solucionar mi problema. Es el siguiente:

Estoy haciendo una aplicación Test, y su estructura esta diseñada mediante un "Tab layout" tengo varias pestañas, y una de ellas es "Navegación". En la cual, lo que pretendo es introducir un WebView y ver una pagina concreta al pulsar en esta tabla.

Hasta ahí bien, funciona todo perfectamente. Mi problema es el tamaño de ese WebView, no sé como dimensionarlo de una dinámica para cada tipo de dispositivo de android. Dependiendo de un tamaño u otro, con el fin de que el Webview no me tape la zona de las pestañas.

Pondré algo de codigo para ilustrar mi problema (Omitiré zonas que no interesan para que tenga mas claridad):

TestActivity (Main)

Código: Seleccionar todo
public class Navegacion extends Activity {
 
public class TestActivity extends TabActivity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
 
        TabHost tabHost = getTabHost();
        Resources res = getResources();

         ........................................................

       // Tab for navegacionspec
        TabSpec navegacionspec = tabHost.newTabSpec("Navegacion");
        navegacionspec.setIndicator("", res.getDrawable(R.drawable.navegacion));
        Intent navegacionIntent = new Intent(this, Navegacion.class);
        navegacionspec.setContent(navegacionIntent);
       
        // Adding all TabSpec to TabHost
        tabHost.addTab(navegacionspec);

         ........................................................


En La clase navegación simplemente creo el WebView y hago el típico loadUrl, etc..

main.xml

Código: Seleccionar todo
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TabWidget
            android:id="@android:id/tabs"
            android:layout_alignParentBottom="true"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            />
    </RelativeLayout>
</TabHost>


navegacion.xml

Código: Seleccionar todo
<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/webview"
        android:layout_width="fill_parent"
        android:layout_height="665px"/>


El problema es, que para un dispositivo con unas dimensiones como el mio, el WebView no "tapa" la zona de las pestañas debido a que especifico manualmente android:layout_height="665px" , pero si pongo android_layout_height = "fill_parent" si las tapa y si pongo android:layout_height="wrap_content" pues simplemente aparece desde la zona superior hasta la mitad de la pantalla.

Me gustaría saber como redimensionar esto para todas los tamaños, de alguna forma automática....


Un saludo!, muchísimas gracias a todos de antemano por su ayuda!
No tienes los permisos requeridos para ver los archivos adjuntos a este mensaje.
Ruben
 
Mensajes: 11
Registrado: 08 May 2012, 14:56

Re: Tamaño WebView

Notapor Ruben » 14 May 2012, 10:53

Hola? alguien me puede hechar una mano, he simplificado el problema:

Ahora mi main.xml es así: pero el webview y listview etc que tengo me siguen tapando las pestañas:

Código: Seleccionar todo
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    >
   
<TabHost android:id="@android:id/tabhost"
       android:layout_width="match_parent"
       android:layout_height="match_parent">      

    <RelativeLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >      

        <TabWidget android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:id="@android:id/tabs"
                 android:gravity="bottom"
                android:layout_alignParentBottom="true"/>                 
        
        <FrameLayout                   
                   android:layout_width="match_parent"
                   android:layout_height="match_parent"
                   android:id="@android:id/tabcontent" >                  
      
                  <include android:id="@+id/tab1" layout="@layout/hi" android:layout_alignTop="@android:id/tabs"/>
                  <include android:id="@+id/tab2" layout="@layout/navegador" android:layout_alignTop="@android:id/tabs"/>
                  <include android:id="@+id/tab3" layout="@layout/imagen" android:layout_alignTop="@android:id/tabs"/>
                  <include android:id="@+id/tab4" layout="@layout/cine" android:layout_alignTop="@android:id/tabs"/>
      
        </FrameLayout>        
   </RelativeLayout>   
</TabHost>
</LinearLayout>



Alguien me puede echar un cable? Estoy bastante desquiciado con este problema
Ruben
 
Mensajes: 11
Registrado: 08 May 2012, 14:56

Re: Tamaño WebView

Notapor trookam » 14 May 2012, 18:51

si usas un relative layout.... y no le pones al frameLayout que quieres que este encima.... dificilmente. Jejejeje.

Quitale el valor al frameLayout

layout_height="0dip"

y ponle

Código: Seleccionar todo
android:layout_above="@+id/tabs"


con eso debería funcionarte.

Un saludo
trookam
 
Mensajes: 42
Registrado: 12 Mar 2012, 18:00

Re: Tamaño WebView

Notapor Ruben » 14 May 2012, 21:29

trookam escribió:si usas un relative layout.... y no le pones al frameLayout que quieres que este encima.... dificilmente. Jejejeje.

Quitale el valor al frameLayout

layout_height="0dip"

y ponle

Código: Seleccionar todo
android:layout_above="@+id/tabs"


con eso debería funcionarte.

Un saludo


Muchísimas grácias siento fallar en cosas obvias, soy nuevo en programación con android y a pesar de haber leido tutoríales, foros en stack overflow, etc no he sido capaz de encontrar esta solucion. He intentado lo que me comentas pero ejecutando el mismo codigo que tengo ahora las pestañas me salen arriba! :shock: No sé porque.

Main xml

Código: Seleccionar todo
<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
   
<TabHost android:id="@android:id/tabhost"
       android:layout_width="match_parent"
       android:layout_height="match_parent">       

    <RelativeLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >       

        <TabWidget android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:id="@android:id/tabs"
                [b] android:gravity="bottom"
                 android:layout_alignParentBottom="true"[/b]/>                 
       
        <FrameLayout                   
                   android:layout_width="match_parent"
                   [b]android:layout_height="0dip"[/b]
                   android:id="@android:id/tabcontent"
                   [b]android:layout_above="@android:id/tabs"[/b] >                   
     
                  <include android:id="@+id/tab1" layout="@layout/hi" />
                  <include android:id="@+id/tab2" layout="@layout/navegador"/>
                  <include android:id="@+id/tab3" layout="@layout/imagen" />
                  <include android:id="@+id/tab4" layout="@layout/cine" />

        </FrameLayout>       
   </RelativeLayout>   
</TabHost>
</LinearLayout>


Y en cualquiera de ellos por ejemplo navegador.xml

Código: Seleccionar todo
<?xml version="1.0" encoding="utf-8"?>

   <WebView xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/webview"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   />


Un saludo muchísimas grácias de antemano!
Ruben
 
Mensajes: 11
Registrado: 08 May 2012, 14:56

Re: Tamaño WebView

Notapor trookam » 14 May 2012, 23:07

usa un LinearLayout en vez de un Relative y baja el tabwidget debajo del frameLayout... deberia salirte bien.
trookam
 
Mensajes: 42
Registrado: 12 Mar 2012, 18:00

Re: Tamaño WebView

Notapor Ruben » 15 May 2012, 07:23

No, sigue saliendo en la parte superior, de todas maneras si uso un LinearLayout:

Tanto
Código: Seleccionar todo
android:layout_above="@android:id/tabs"


como

Código: Seleccionar todo
android:layout_alignParentBottom="true"


No pierden su efecto?? Estas propiedades no son solo aplicables a RelativeLayout

Un saludo y gracias
Ruben
 
Mensajes: 11
Registrado: 08 May 2012, 14:56

Re: Tamaño WebView

Notapor Ruben » 16 May 2012, 15:27

Vale, genial!, Ya he solucionado el problema, el fallo no estaba en los XML. Si no, en una actividad principal. No Refrescaba correctamente setContentview() ya que tengo una pantalla Intro y posteriormente carga el xml principal.

Sin embargo, no he conseguido solucionar el problema finalmente, de manera que ahora, no me muestra la actividad de cada una de las tablas. Por tanto cada pestaña sale en negro y no muestra nada.

Alguna idea?

Muchisimas grácias de antemano!
Ruben
 
Mensajes: 11
Registrado: 08 May 2012, 14:56


Volver a Consultas Técnicas Programación Android