cách thay đổi màu của chỉ báo văn bản của tab? tôi có thể thay đổi biểu tượng bằng cách sử dụng thẻ chọn tham chiếu example. nhưng không thể với màu văn bản. làm sao?cách thay đổi màu của văn bản chỉ báo tab trong android?
Trả lời
Phong cách nó trong sự thay đổi chủ đề tùy chỉnh của bạn
<item name="android:tabWidgetStyle">@android:style/Widget.TabWidget</item>
và
<style name="Widget.TabWidget">
<item name="android:textAppearance">@style/TextAppearance.Widget.TabWidget</item>
<item name="android:ellipsize">marquee</item>
<item name="android:singleLine">true</item>
</style>
<style name="TextAppearance.Widget.TabWidget">
<item name="android:textSize">14sp</item>
<item name="android:textStyle">normal</item>
<item name="android:textColor">@android:color/tab_indicator_text</item>
</style>
Đây là một câu trả lời mới tôi thấy từ Fred Grott (http://knol.google.com/k/fred-grott/advance-tabs/) sau khi một chút tìm kiếm web.
Điều này cho phép bạn đặt selector
cho màu văn bản để có thể sử dụng màu khác khi tab được chọn hay không. Điều này có thể rất hữu ích nếu bạn đang sử dụng màu nền khác cho tab nếu được chọn. Tất nhiên bạn cũng có thể chỉ cần ném một màu đồng bằng và không phải là một bộ chọn.
final TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(android.R.id.title);
tv.setTextColor(this.getResources().getColorStateList(R.color.text_tab_indicator));
Nơi R.color.text_tab_indicator là selector xml file nằm trong thư mục res/drawable của bạn.
Nói cách khác, văn bản chỉ báo thực sự là TextView
có thể truy xuất được qua đối tượng View
có thể truy cập được từ đối tượng TabWidget
.
Hãy xem các ví dụ của Fred để biết thêm thông tin và bối cảnh liên quan đến các khai báo biến cũng như các thủ thuật khác.
tv là null , findViewById (android.R.id.title) không tìm thấy nó – trampster
Hãy thử ColorStateLists. Chúc may mắn.
Câu trả lời của Danny C chính xác 100%. Tôi chỉ muốn thêm nội dung nào đó vào câu trả lời hoàn chỉnh với tệp tài nguyên.
Các text_tab_indicator dưới tập tin res/màu
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:textColor="@color/text_tab_selected"
android:state_selected="true" />
<item android:textColor="@color/text_tab_unselected"
android:state_selected="false" />
</selector>
Và đây text_tab_unselected & text_tab_selected sẽ trông như thế này dưới màu sắc/giá trị thư mục
<resources>
<color name="text_tab_selected">#ffffff</color>
<color name="text_tab_unselected">#95ab45</color>
Sau đó cuối cùng thêm câu trả lời Dannyy trong tệp lớp tab
final TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(android.R.id.title);
tv.setTextColor(this.getResources().getColorStateList(R.color.text_tab_indicator));
'android: textColor' phải là' android: color' trong tệp text_tab_indicator.xml. – iStar
getColorStateList không được chấp nhận, vì vậy hãy sử dụng ContextCompat.getColorStateList (ngữ cảnh, R.color.text_tab_indicator). – CoolMind
không thành công vì TV là null, dường như không thể tìm thấy một TextView có tiêu đề id. Mã của tôi nằm trong OnCreate của đoạn có chứa TabLayout – trampster
Sự thay đổi về màu sắc cũng có thể được nêu rõ mà không cần sử dụng java - có lẽ tốt hơn.
tôi đã thực hiện thay đổi đối với text_tab_indicator (chú ý Format được đổi thành 'màu'):
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_selected="true" android:color="@color/text_tab_selected" />
<item android:state_selected="false" android:color="@color/text_tab_unselected" />
</selector>
Đặt phong cách của TabWidget để trỏ đến một phong cách cụ thể trong mã xml của bạn:
<TabWidget
...
style="@style/TabText"
/>
Khai text_tab_indicator của bạn nằm ở/res/màu như bạn mong muốn màu sắc theo phong cách
<style name="TabText">
<item name="android:textColor">@color/tab_text_color</item>
</style>
Nó hoạt động như một sự quyến rũ (đối với tôi).
Chúc mừng, Randall
Mặc dù giải pháp này có vẻ hoàn hảo nhưng nó không hoạt động trên cả hai thiết bị của tôi (Android 5 và 2.3). – CoolMind
tải xuống. thông qua liên kết này: http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=core/res/res/values/themes.xml;h=6b3d7407d1c895a3c297e60d5beac98e2d34c271;hb = HEAD và tham khảo APIDemos. Cảm ơn . – Praveen
@DroidBase, @Alex Volovoy, tôi nên đặt phong cách ở đâu. Khi tôi đặt nó dưới dạng một tệp xml riêng biệt trong thư mục giá trị, nhận được lỗi 'Lỗi truy xuất nguồn gốc cho mục: Không tìm thấy tài nguyên nào khớp với tên đã cho 'Widget'.' –
@Mithun: Vui lòng đăng một số đoạn mã tìm giải pháp chính xác. Đoán của tôi là bạn đã không đề cập đến thuộc tính cha mẹ. đó là ghi đè lên phong cách mặc định của một đối tượng xml – Praveen