7

Tôi muốn áp dụng một số kiểu cho DatePicker. Trong platform's attrs.xml chúng ta có thể xem các thuộc tính sau cho DatePicker styleable:Không thể giải quyết thuộc tính từ không gian tên Android

<declare-styleable name="DatePicker"> 
    ... 
    <!-- The text color for the selected date header text, ex. "2014" or 
     "Tue, Mar 18". This should be a color state list where the 
     activated state will be used when the year picker or day picker is 
     active.--> 
    <attr name="headerTextColor" format="color" /> 

    <!-- The background for the selected date header. --> 
    <attr name="headerBackground" /> 
    ... 
</declare-styleable> 

Trong khi tôi có thể tham khảo android:headerBackground, bất ngờ tôi không thể làm điều đó cho android:headerTextColor thuộc tính. Vì vậy, mã sau đây trong styles.xml:

<style name="MyDatePickerStyle" parent="@android:style/Widget.Material.DatePicker"> 
    <item name="android:headerBackground">@color/red</item> 
    <item name="android:headerTextColor">@color/red</item> 
</style> 

Lời nhắc có lỗi, không thể giải quyết được lỗi android:headerTextColor.

enter image description here

Nhưng tôi có thể clearly seeWidget.Material.DatePicker trọng thuộc tính đó. Điều thú vị là đoạn mã được đặt trước với chú thích Attributes for new-style DatePicker, điều này có thể dẫn đến nguyên nhân của hành vi này.

Nguyên nhân của hành vi này và cách ghi đè thuộc tính đó?

Chạy trên Android Studio 2.3, minSdkVersion 23, buildToolsVersion 25.0.3, compileSdkVersion & targetSdkVersion 23, không còn giá trị lưu trữ và dự án làm sạch.


Như bạn có thể thấy trong R.attr docs, có văn bản này đằng sau một số thuộc tính:

liên tục này đã bị phản đối ở mức API 23. Sử dụng headerTextColor để thay thế.

Có nghĩa là, thuộc tính này phải được hiển thị với API công khai, nhưng bằng cách nào đó thuộc tính này bị tước bỏ và AAPT không thể truy cập vào nó.

Đã mở an issue tại trình theo dõi lỗi.

+0

. @ Màu/đỏ Pavya

+0

Odd Tôi thấy rằng cùng một hành vi 'android:. Stills headerMonthTextAppearance' hoạt động để ghi đè lên sự xuất hiện của tháng. Thật không may, 'android: headerYearTextAppearance' cũng có vẻ bị hỏng, vì vậy đây sẽ chỉ là một nửa số công việc. – Cheticamp

+0

@Cheticamp, tôi cũng thấy rằng hành vi liên quan đến' android: headerYearTextAppearance'. Tôi tình cờ gặp vấn đề này khi trả lời [this câu hỏi] (https://stackoverflow.com/a/44088524/1083957).Bằng cách nào đó, tôi có thể tìm thấy các đường nối để thay đổi hình thức văn bản năm, nhưng nó là bí ẩn đối với tôi tại sao thuộc tính này không được nhìn thấy. Nó có vẻ như một lỗi. – azizbekian

Trả lời

-1

Cố gắng sử dụng này

Style.xml

<style name="DatePicker"> 
     <item name="android:headerBackground">@color/colorPrimaryDark</item> 
     <item name="headerTextColor">@color/colorAccent</item> 
</style> 

Values ​​thư mục attr.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <declare-styleable name="DatePicker"> 
     ... 
     <!-- The text color for the selected date header text, ex. "2014" or 
      "Tue, Mar 18". This should be a color state list where the 
      activated state will be used when the year picker or day picker is 
      active.--> 
     <attr name="headerTextColor" format="color" /> 
    </declare-styleable> 
</resources> 
+0

['Không tìm thấy tài nguyên nào khớp với tên đã cho: attr 'headerTextColor''] (https://i.gyazo.com/290d94c771d9fc11518ea575b3260b9a.png) – azizbekian

+0

Điều đó không hiệu quả. – azizbekian

+0

Xin lỗi ** android: headerBackground ** color chúng ta có thể thiết lập và nó sẽ đảo ngược màu của nó và đặt thành ** headerTextColor ** là attr riêng. Cảm ơn Tin Tran –

2

style attribute "android:attr/headerTextColor" is private

AAPT nói rằng thuộc tính là tư nhân. Có lẽ họ đang thiếu một @hide trong attrs.xml

+0

Bạn có thể làm rõ chính xác cách bạn có thể tạo lại thông báo lỗi này không? Bạn đang sử dụng AAPT2? Thứ hai, tôi không thể thấy thuộc tính này nên được tạo ra như thế nào bởi vì chúng đề xuất sử dụng chính xác thuộc tính này thay vì không dùng nữa 'headerMonthTextAppearance',' headerDayOfMonthTextAppearance' và 'headerYearTextAppearance'. Xem [tại đây] (https://github.com/android/platform_frameworks_base/blob/master/core/res/res/values/attrs.xml#L4827). – azizbekian

+0

Tôi đang sử dụng Android Studio 3.0 để sử dụng AAPT2. Bạn cũng có thể thêm 'android.enableAapt2 = false' vào' gradle.properties' để sử dụng aapt2 trong Android Studio 2.3. vâng tôi thấy 'headerTextColor' không nên là riêng tư, https://developer.android.com/reference/android/R.attr.html cũng không ghi lại thuộc tính. –

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