2011-06-11 4 views
2

Je développe une application dans android. besoin de la même résolution pour Default(WVGA800) HVGAQVGA et tous les émulateurs qui signifient la taille de l'émulateur ne devraient pas avoir d'importance en ce moment j'ai ce xml file et je vais avoir besoin de taille fixe pour la barre d'onglet inférieure pour cela aussi ce shold je fais? en ce moment je fais face à un problème est .. je dois mettre de l'espace pour tabbar en bas. Donc, quand je suis cette même application dans la configuration par défaut (WVGA800) HVGA ou QVGA, il chevauchent le webview sur la barre d'onglets, donc il semble que je devrais faire? J'utilise Android 1,6résolution android besoin d'aide

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" android:id="@+id/rl" 
     android:layout_height="371dip"> 
    <!-- <WebView android:id="@+id/webviewHelp" android:layout_width="fill_parent"--> 
    <!--  android:layout_height="fill_parent" />--> 
    <WebView android:id="@+id/webviewHelp" android:layout_width="fill_parent" 
      android:layout_height="fill_parent" /> 
     <Button android:id="@+id/My_btn" 
      android:layout_alignParentBottom="true" 
      android:layout_alignParentLeft="true" android:gravity="center" android:textSize="8px" android:text="Download this mp3 file" 
    android:textColor="@color/white" 
      android:layout_width="fill_parent" android:layout_height="33dip" 
      android:visibility="invisible" /> 
     <Button android:id="@+id/My_btn1" 
      android:layout_alignParentBottom="true" 
      android:layout_alignParentLeft="true" android:text="this is button !" 
      android:layout_width="0dip" android:layout_height="0dip" 
      android:visibility="invisible" /> 
    </RelativeLayout> 

c'est mon activité TabBar classe

final TabHost tabHost = (TabHost) getTabHost(); 
     try { 

      //GlobalVariable.Setdownload(0); 
      tabHost.addTab(createTab(myclsname.class, "Welcome", 
        "Welcome", R.drawable.tab_icon_events)); 
      tabHost.addTab(createTab(anotheclsname.class, ".Mp3List", ".Mp3List", 
        R.drawable.tab_icon_pitchforkfm)); 
      tabHost.addTab(createTab(AboutUs.class, "AboutUs", "AboutUs", 
        R.drawable.tab_icon_home)); 
      tabHost.addTab(createTab(ExtraInfromation.class, "ExtraInformation", "ExtraInformation", 
        R.drawable.tab_icon_tv)); 

      tabHost.setCurrentTab(1); 
     } catch (Exception e) { 
      // TODO: handle exception 
     } 
     tabHost.getTabWidget().getChildAt(0).getLayoutParams().width = 85; 
     tabHost.getTabWidget().getChildAt(0).getLayoutParams().height=57; 
     tabHost.getTabWidget().getChildAt(1).getLayoutParams().width = 85; 
     tabHost.getTabWidget().getChildAt(2).getLayoutParams().width = 85; 
     tabHost.getTabWidget().getChildAt(3).getLayoutParams().width = 85; 
tabHost.setOnTabChangedListener(new OnTabChangeListener() { 

    bla.. bla.. bla.. 

    private TabSpec createTab(final Class<?> intentClass, final String tag, 
      final String title, final int drawable) 
    { 
     final Intent intent = new Intent().setClass(this, intentClass); 

     final View tab = LayoutInflater.from(getTabHost().getContext()) 
       .inflate(R.layout.tab, null); 
     ((TextView) tab.findViewById(R.id.tab_text)).setText(title); 
     ((ImageView) tab.findViewById(R.id.tab_icon)) 
       .setImageResource(drawable); 

     return getTabHost().newTabSpec(tag).setIndicator(tab) 
       .setContent(intent); 

    } 

Que dois-je faire, problème ci-dessus sera résoudre? merci à l'avance: Pragna

+0

Même résolution sur les écrans ayant des résolutions différentes? Si c'est encore possible, ça aura l'air vraiment mauvais (comme courir des applications iphone sur un ipad en 2x). – trutheality

+0

voir mon code édité – Android

Répondre

0

Il y a plusieurs problèmes ici:

  • Vous ne pouvez pas obtenir la même disposition à travailler dans tous les différents écrans. Cela a été répété encore et encore ici, et dans le android dev guide. Comme expliqué dans ce lien, vous devrez configurer des dossiers de mise en page pour chaque groupe de résolution d'écran et créer des mises en page pour chacun d'eux avec les tailles requises (au moins res/layout-small, res/layout-normal et res/layout-large). En outre, vous devrez probablement créer un ensemble de bitmaps (si vous en avez) pour chaque densité d'écran (res/drawable-hdpi, res/drawable-mdpi et res/drawable-ldpi au moins).

  • Si vous voulez corriger l'onglet en bas, suivez les réponses à cette question: How to reduce the tab bar height and display in bottom.

  • Si vous utilisez un RelativeLayout au lieu d'un LinearLayout, vous pouvez utiliser android:layout_above="@id/tabs" pour forcer Android à rendre tout ci-dessus les onglets et ne se chevauchent pas les.

  • Si le contenu est plus grand que l'écran, pensez à inclure votre mise en page dans un ScrollView.

  • Non pertinent à cette question, mais très pertinent pour les futures questions dans SO: s'il vous plaît, essayez d'éviter d'afficher du code non pertinent. La partie Java n'a aucun intérêt pour votre question.

+0

okk vous voulez dire que je dois créer le fichier main.xml pour chaque résolution? – Android

+0

mais comment peut-il fournir setcontentview? je veux dire comment puis-je déterminer quel fichier main.xml je dois charger? – Android

+0

Il sera déterminé automatiquement à l'exécution en fonction de l'écran de l'appareil. S'il vous plaît, ** lisez les liens que j'ai publiés **. Je vais le répéter ici: http://developer.android.com/guide/practices/screens_support.html au cas où vous l'avez manqué. – Aleadam