2010-08-18 44 views
12

Tôi đã có hoạt động tab đơn giản với cách bố trí tiếp theo:Loại bỏ các dòng dưới 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"   /> 

tôi sử dụng các nút như đường kẻ màu đen chỉ báo cho các tab

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))); 

Trong trường hợp này FrameLayout luôn luôn có và hiệu ứng đổ bóng trên đầu (bạn có thể thấy nó dưới các nút):

alt text

Câu hỏi đặt ra là: Làm thế nào tôi có thể loại bỏ dòng này? Phương pháp vẽ nó trong nguồn Android ở đâu?

Trả lời

17

Áp dụng một chủ đề tùy chỉnh để hoạt động của bạn, và không có giá trị ra android: windowContentOverlay thuộc tính.

Xác định một chủ đề trong themes.xml:

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

Áp dụng các chủ đề trên ứng dụng của bạn hoặc hoạt động trong AndroidManifest.xml:

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

Hy vọng nó giúp. Nó khiến tôi rất đau đầu ...

+2

Điều này cũng loại bỏ lớp phủ nội dung cửa sổ cho hoạt động hiện tại. Không có cách nào để chỉ xóa lớp phủ cho mục đích của máy chủ lưu trữ tab? –

+2

Làm việc như một sự quyến rũ! – rogcg

+0

giải pháp hoàn hảo! – vanleeuwenbram

0

Dường như cách làm điều đó là để tổ tabwidget trong một LinerLayout ... Look here.

+0

Đây không phải là trường hợp của tôi. Anh ấy nói về dòng trên TabWidget, nhưng tôi nói về dòng trên RelativeLayout. Ngay cả khi tôi đặt TabWidget xuống dưới thì RelativeLayout sẽ luôn có dòng và bóng tối này. –

+0

Bạn đang nói về dòng màu đen ngay bên dưới các tab? – Sephy

+0

Có. Ngay cả khi tôi đặt một cái gì đó giữa FrameLayout và TabWidget dòng này sẽ được trên FrameLayout. –

0

Đáng tiếc là bạn không thể thoát khỏi nó. Đây là kết quả của cách thực hiện TabWidget. Nội bộ TabWidgetActivityGroup và nội dung của mỗi tab là Activity riêng.

0

Những gì tôi đề nghị bạn là sử dụng các thư viện được cung cấp bởi GrreenDroid: http://android.cyrilmottier.com/?p=274

Chỉ cần có một cái nhìn tại The GDTabActivity, bạn sẽ có thể tinh chỉnh mọi thứ và thoát khỏi Bar này.

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

+0

Điều này không giải quyết được vấn đề. Đây là kết quả của tôi http://yfrog.com/n8devicewp –

+0

Bạn chỉ cần chỉnh sửa các tệp PNG. Điều đó có vẻ không phức tạp ... –

8

Trong xml bố trí của bạn:

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

... 

</TabWidget> 
+0

Không hoạt động. Trên thực tế bóng trên FrameLayout và không phải trên TabWidget. –

+4

android: tabStripEnabled chỉ có sẵn từ 2.2 – Eby

Các vấn đề liên quan