2010-11-05 6 views
2

J'ai la application.xml suivanteD'où vient cette bordure supérieure dans Theme.Light.NoTitleBar?

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.currency.mobile.android"> 
    <uses-permission android:name="android.permission.INTERNET"/> 
    <application android:icon="@drawable/icon" android:label="@string/app_name" 
       android:theme="@android:style/Theme.Light.NoTitleBar"> 

     <activity android:name=".MainActivity" android:noHistory="true"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN"/> 
       <category android:name="android.intent.category.LAUNCHER"/> 
      </intent-filter> 
     </activity> 

     <activity android:name=".LoginActivity"/> 
     <activity android:name=".HomeActivity" /> 
     <activity android:name=".FriendsActivity"/> 
     <activity android:name=".PlacesActivity"/> 
     <activity android:name=".ProfileActivity"/> 
     <activity android:name=".PurchasesActivity"/> 
    </application> 
</manifest> 

Ceci est mon point de vue onglet:

<?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"> 
    <LinearLayout 
      android:orientation="vertical" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:padding="5dp"> 
     <TabWidget 
       android:id="@android:id/tabs" 
       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" 
       android:padding="5dp"/> 
    </LinearLayout> 
</TabHost> 

Lorsque vous utilisez Theme.Light.NoTitleBar je reçois cette ligne laide au milieu:

alt text Mais quand j'utilise Theme.Black, il n'a pas une ligne si étrange. Un moyen de le réparer afin que je puisse utiliser le thème de la lumière?

Répondre

5

C'est en fait le cadre du thème (ou peut-être la superposition, je ne me souviens plus lequel), et Android l'applique aux activités même lorsqu'elles sont imbriquées dans des onglets. L'astuce consiste à définir un thème (en res/value/theme.xml) avec les windowFrame et windowContentOverlay propriétés définies à @null sur l'activité du conteneur, comme celui-ci:

<style 
    name="Theme.Light.NoFrame" 
    parent="android:Theme.Light"> 
    <item 
     name="android:windowFrame">@null</item> 
    <item 
     name="android:windowContentOverlay">@null</item> 
</style> 

Je vous recommande également de creuser à travers style.xml et theme.xml dans le AOSP pour en savoir plus; les thèmes et les styles sont sévèrement sous-documentés mais assez faciles à comprendre en lisant simplement la source.

+0

Ahh l'astuce était d'utiliser android: theme dans application.xml. Au lieu de le faire pour le style de l'activité. C'était confus. Mais ça marche maintenant. Merci! –

Questions connexes