2015-06-05 22 views
9

Tôi đã thực hiện một vài hộp kiểm và nút radio với tính năng xem văn bản, nhưng chúng không được tô màu trước kẹo que.TextView màu trên AppCompat

TextView My mở rộng AppCompatCheckedTextView, được theo kiểu như:

<style name="CheckBoxStyle" parent="android:Widget.TextView"> 
    <item name="android:textAppearance">?android:attr/textAppearance</item> 
    <item name="android:drawableRight">?android:attr/listChoiceIndicatorMultiple</item> 
    <item name="android:drawableEnd">?android:attr/listChoiceIndicatorMultiple</item> 
    <item name="android:clickable">true</item> 
    <item name="android:background">?attr/selectableItemBackground</item> 
    <item name="android:gravity">center_vertical</item> 
    <item name="android:paddingTop">8dp</item> 
    <item name="android:paddingBottom">8dp</item> 
</style> 

và tôi đã giọng của tôi được định nghĩa trong chủ đề của tôi:

<style name="AppTheme.Platform.NoActionBar" parent="Theme.AppCompat.NoActionBar"> 
    <item name="android:selectableItemBackground">@drawable/press_overlay_dark</item> 
    <item name="android:borderlessButtonStyle">@style/BorderlessButton</item> 

    <item name="android:colorAccent">@color/color_accent</item> 
    <item name="colorAccent">@color/color_accent</item> 
</style> 

Tôi đang xây dựng so với v21, với tối thiểu là v16 và sử dụng AppCompat v7-22.1.1. hoạt động của tôi kéo dài AppCompatActivity

Genymotion 4.1.1 Nexus 5 5.1.1

+0

câu hỏi của bạn là gì? –

+0

Làm cách nào để tôi nhận được kẹo trước khi làm việc. AFAIK, nó sẽ được tô màu cùng với 'EditText' và tương tự. Đã thêm ảnh chụp màn hình để làm rõ. – DariusL

+0

kiểm tra [câu trả lời này] (http://stackoverflow.com/a/35867517/2826147) để cập nhật. –

Trả lời

8

Nhìn vào nguồn cho AppCompatCheckedTextView Cuối cùng tôi đã tìm ra. Chỉ làm mờ checkMark. Vì nó có nguồn gốc từ CheckedTextView, có nguồn gốc từ TextView, drawableRight chỉ được nhuộm màu trên kẹo. Nhìn vào nguồn cho AppCompatTextView, nó chỉ cung cấp một tương thích ngược textAllCaps. Vì vậy, AFAIK, không có cách nào được tích hợp để tô màu drawableRight và các loại kẹo trước giống như kẹo. Nếu bạn muốn có giải pháp có thể tùy chỉnh hơn, bạn có thể cần phải đặt các bản vẽ của mình trong bố cục.

Các phong cách Cập nhật:

<style name="CheckBoxStyle" parent="android:Widget.TextView"> 
    <item name="android:textAppearance">@style/TextAppearance.AppCompat</item> 
    <item name="android:checkMark">?android:attr/listChoiceIndicatorSingle</item> 
    <item name="android:clickable">true</item> 
    <item name="android:background">?attr/selectableItemBackground</item> 
    <item name="android:gravity">center_vertical</item> 
    <item name="android:paddingTop">8dp</item> 
    <item name="android:paddingBottom">8dp</item> 
</style> 
1

Các pha màu widget trong AppCompat hoạt động bằng cách chặn bất kỳ lạm phát bố trí và chèn một phiên bản màu-aware đặc biệt của widget trong place.if của nó bạn có phiên bản tùy chỉnh của riêng bạn phụ tùng, mà trong trường hợp của bạn là checkedtextview, các pha màu sẽ không làm việc

Từ các nhà phát triển viết blog dưới tùng pha màu

http://android-developers.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html

Khi chạy trên thiết bị chạy Android 5.0, tất cả các tiện ích được tô màu bằng các thuộc tính chủ đề màu mà chúng ta vừa nói đến. Có hai tính năng chính cho phép điều này trên Lollipop: có thể tô màu, và tham chiếu các thuộc tính chủ đề (của biểu mẫu? Attr/foo) trong các bản vẽ.

AppCompat cung cấp hành vi tương tự trên các phiên bản trước của Android cho một tập hợp con của UI widget:

Tất cả những gì được cung cấp bởi thanh công cụ AppCompat của (phương thức hành động, vv)

EditText

Spinner

CheckBox

RadioButton

Switch (sử dụng android.support.v7.widget.SwitchCompat mới)

CheckedTextView

Bạn không cần phải làm bất cứ điều gì đặc biệt để thực hiện những công việc, chỉ cần sử dụng các điều khiển trong bố trí của bạn như bình thường và AppCompat sẽ làm phần còn lại (với một số cảnh báo; xem Câu hỏi thường gặp bên dưới).

+1

Vâng, tôi sử dụng AppCompatCheckedTextView và nó vẫn không tô màu. Hoặc nó sẽ chỉ màu nếu tôi để cho hoạt động thổi phồng quan điểm? – DariusL

+0

Chỉ cần thêm appcompattextview vào bố cục XML của bạn thay vì tạo bố cục tùy chỉnh mở rộng appcompattextview – 3xplore

+0

Điều đó không có hiệu lực. – DariusL

0

Tôi có một vấn đề màu. AppCompatTextView không có hiệu ứng màu khi chạy trên SDK dưới 21. Giải pháp của tôi là thiết lập màu sắc thông qua java. Ví dụ bên dưới hoạt động.

xml

<android.support.v7.widget.AppCompatTextView 
    android:layout_width="50dp" 
    android:layout_height="20dp" 
    android:id="@+id/tvInfor2" 
    android:background="@drawable/btn_style_black_border" 
    android:gravity="center" 
    android:backgroundTint="@color/colorPrimary"/> 

java

int currentapiVersion = android.os.Build.VERSION.SDK_INT; 
    if (currentapiVersion <= 21){ 
     tvInfor2.setSupportBackgroundTintList(getResources().getColorStateList(R.color.colorPrimary)); 
    } 
6

Nếu ai đó vẫn đang tìm kiếm giải pháp.

Đối Api mức 23> =android:drawableTint="@color/colorPrimary"

Đối Api mức Api < mức 23:

private void setTextViewDrawableColor(TextView textView, int color) { 
     for (Drawable drawable : textView.getCompoundDrawables()) { 
      if (drawable != null) { 
       drawable.setColorFilter(new PorterDuffColorFilter(getColor(color), PorterDuff.Mode.SRC_IN)); 
      } 
     } 
    } 
3

Đây là một TextView tương thích ngược.

Cách sử dụng:

<com.github.pedramrn.TextViewCompatTint 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:drawableStart="@drawable/ic_comment_black_14dp" 
    app:drawableTint="@color/colorPrimary" 
    tools:text="28" 
    /> 

gist

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