2010-08-18 6 views
12

У меня есть простая вкладка активность со следующим макетом:Избавьтесь от линии под TabWidget

<TabWidget 
    android:id="@android:id/tabs" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"     
    android:background="#ffffff00"  /> 

<FrameLayout    
    android:id="@android:id/tabcontent" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"  
    android:background="#ffffff00"   /> 

я использую кнопки в качестве индикаторов для вкладок

tabHost.addTab(tabHost.newTabSpec("Tab1") 
       .setIndicator(new Button(this))     
       .setContent(new Intent(this, TabActivity1.class))); 

tabHost.addTab(tabHost.newTabSpec("Tab2") 
       .setIndicator(new Button(this))     
       .setContent(new Intent(this, TabActivity2.class))); 

В этом случае FrameLayout всегда получил черную линии и эффект тени сверху (вы можете увидеть его под кнопками):

alt text

Вопрос в следующем: Как я могу избавиться от этой строки? Где метод, который использует его в Android-источниках?

ответ

17

Применить пользовательскую тему для вашей деятельности, и обнулять андроида: windowContentOverlay атрибут.

Определить тему в themes.xml:

<style name="YourTheme" parent="if you want"> 
    ... 
    <item name="android:windowContentOverlay">@null</item> 
    ... 
</style> 

Применить тему на приложении или деятельности в AndroidManifest.xml:

<application android:theme="@style/YourTheme" 
    ... > 

Надеется, что это помогает. Это вызвало у меня много головной боли ...

+2

Это также удаляет оверлей содержимого окна для текущей активности. Невозможно удалить только оверлей для намерений хоста вкладки? –

+2

Работает как очарование! – rogcg

+0

идеальное решение! – vanleeuwenbram

0

Кажется, что способ сделать это состоит в гнезде TabWidget в LinerLayout ... Look here.

+0

Это не мое дело. Он говорит о строке на TabWidget, но я говорю о линии RelativeLayout. Даже если я поместил TabWidget на дно, тогда RelativeLayout всегда будет иметь эту строку и тень. –

+0

Вы говорите о черной линии чуть ниже вкладки? – Sephy

+0

Да. Даже если я поставлю что-то между FrameLayout и TabWidget, эта строка будет на FrameLayout. –

0

К сожалению, вы не можете избавиться от него. Это результат того, как реализуется TabWidget. Внутренне TabWidget является ActivityGroup, и содержимое каждой вкладки является собственным Activity.

0

То, что я предлагаю вам, чтобы использовать библиотеку, представленную GrreenDroid: http://android.cyrilmottier.com/?p=274

Просто взгляните на The GDTabActivity, вы сможете настроить все, и избавиться от этого бара.

http://android.cyrilmottier.com/medias/actionbar/action_bar_4.png

+0

Это не решит проблему. Это мой результат http://yfrog.com/n8devicewp –

+0

Вам нужно только отредактировать PNG-файлы. Это кажется не сложным ... –

8

в макете XML:

<TabWidget ... 
    android:tabStripEnabled="false" > 

... 

</TabWidget> 
+0

Не работает. На самом деле тени на FrameLayout, а не на TabWidget. –

+4

android: tabStripEnabled доступен только из 2.2 – Eby

Смежные вопросы