2009-12-15 39 views
6

Tôi có một ứng dụng nhắm vào khung 1.5 và sử dụng chủ đề ánh sáng mặc định. Khi sử dụng tiện ích con tab với chủ đề này, các hình ảnh tab hầu như không nhìn thấy được và các chú thích tab không thể phân biệt được, ngoại trừ tab hiện đang hoạt động.Android TabWidget in Light theme

Trong chủ đề tối mặc định, các tab này đi qua khá rõ ràng, nhưng đây không phải là giải pháp tôi rất hài lòng. Có một thiết lập đơn giản tôi có thể thiết lập, thiết lập tiện ích tab để hiển thị tốt hơn trong các chủ đề sáng hay tôi có phải giả mạo hình ảnh và kiểu văn bản theo cách thủ công không?

Trả lời

10

không đẹp, nhưng bạn có thể thử điều này trong hoạt động tab của mình.

// light theme support 
final TabHost tabHost = getTabHost(); 
tabHost.setBackgroundColor(Color.WHITE); 
tabHost.getTabWidget().setBackgroundColor(Color.BLACK); 

// hack to set font size 
LinearLayout ll = (LinearLayout) tabHost.getChildAt(0); 
TabWidget tw = (TabWidget) ll.getChildAt(0); 

// first tab 
RelativeLayout rllf = (RelativeLayout) tw.getChildAt(0); 
lf = (TextView) rllf.getChildAt(1); 
lf.setTextSize(21); 
lf.setPadding(0, 0, 0, 6); 

// second tab 
RelativeLayout rlrf = (RelativeLayout) tw.getChildAt(1); 
rf = (TextView) rlrf.getChildAt(1); 
rf.setTextSize(21); 
rf.setPadding(0, 0, 0, 6); 

/res/values/colors.xml nên có

<resources> 
    <drawable name="black">#ff000000</drawable> 
    <drawable name="white">#ffffffff</drawable> 
</resources> 

AndroidManiest.xml nên có

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

nếu bạn muốn làm điều gì đó điên, cố gắng http://ezmobile.wordpress.com/2009/02/02/customized-android-tabs/

+1

có, điều này sẽ phải làm. tôi muốn duy trì một cái nhìn đó là bản địa nhất có thể, vì vậy tôi sẽ không mạo hiểm vào đồ họa tùy chỉnh. về cơ bản, thiết lập màu nền của tabwidget thành màu đen là tất cả những gì cần thiết để làm cho các tab hiển thị. phần còn lại là màu trắng-ish từ chủ đề chính của ứng dụng, vì vậy tôi đã không thực hiện thêm bất kỳ cấu hình nào. Đối với tài nguyên/màu sắc; làm thế nào đến bạn đang xác định màu sắc của riêng bạn ở đây? Đó không phải là màu đen giống như trong 'android.graphics.Color.BLACK'? hoặc bạn chỉ không muốn nhập toàn bộ thư viện đó, chỉ với hai màu? –

+0

i có nhiều màu trong tập tin màu của tôi - tôi muốn làm cho bài đăng sạch hơn :) – yanokwa

+0

Tôi đã thử giải pháp này nhưng trong nhật thực GlobalConstants được gạch dưới màu đỏ. lỗi đọc., "GlobalConstants không thể được giải quyết". Tôi có cần khai báo GlobalConstants hoặc nhập nó không? –

2

Đây là lỗi; bạn có thể báo cáo trong số the issue tracker không?

AFAIK, cách giải quyết tùy chỉnh kiểu văn bản và hình ảnh của bạn đúng.

Cũng cần lưu ý rằng tiện ích tab trong 2.0 dường như không có kiểu ánh sáng.

2

Bằng cách sử dụng công cụ trình xem phân cấp, tôi đã tìm thấy id android cho chế độ xem văn bản trong tab. Một cách tốt hơn để thay đổi các thuộc tính văn bản (bao gồm cả màu sắc) là bằng cách làm như sau ...

TabWidget tw = (TabWidget)tabHost.findViewById(android.R.id.tabs); 
View tabView = tw.getChildTabViewAt(0); 
TextView tv = (TextView)tabView.findViewById(android.R.id.title); 
tv.setTextSize(20); 
2

Một cách rất đơn giản để giải quyết vấn đề màu sắc/độ tương phản trong cách bố trí:

<TabWidget 
    android:id="@android:id/tabs" 
    android:background="#FF000000" 
    android:padding="2dp" 

này đặt nền của TabWidget thành màu đen và thêm một chút đệm để bạn có độ tương phản với các tab trên nền đen. Nó không hoàn hảo, nhưng hoạt động trong 1,5, 2,2, chủ đề sáng và tối.