2011-02-09 14 views
17

Tôi có một chủ đề từ chối áp dụng cho các hoạt động - không có kiểu nào được áp dụng. Nếu tôi không cung cấp thuộc tính layout_width/layout_height cho <Button>, nó cũng bị lỗi thời gian chạy, cho biết rằng lớp Button không được áp dụng.Chủ đề Android không được đặt

/res/values/themes.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="Theme" parent="android:style/Theme.Black"> 
     <item name="android:windowNoTitle">true</item> 
     <item name="android:buttonStyle">@style/Button</item> 
     <item name="android:windowBackground">@color/page_background_light</item> 
     <item name="android:textAppearance">@style/TextAppearance</item> 
    </style> 
</resources> 

/res/values/styles.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="TextAppearance" parent="@android:style/TextAppearance"> 
     <item name="android:textSize">12sp</item> 
     <item name="android:textColor">@color/darkblue</item> 
    </style> 
    <style name="Button" parent="@android:style/Widget.Button"> 
     <item name="android:layout_width">fill_parent</item> 
     <item name="android:layout_height">wrap_content</item> 
     <!--<item name="android:textColor">#3C2F4F</item> 
     <item name="android:textSize">20dip</item>--> 
    </style> 
</resources> 

và có liên quan manifest thiết:

<application android:icon="@drawable/icon" 
    android:label="@string/app_name" 
    android:theme="@style/Theme"> 

Lỗi rõ ràng của tôi là gì?

+0

Tôi đang xử lý chính xác cùng một sự cố ngay bây giờ. Bạn có chắc chắn bạn có thể đặt chủ đề trong tệp riêng biệt không?Tôi đã cố gắng để thiết lập chủ đề cho hoạt động (thay vì ứng dụng) và tôi cũng đã cố gắng áp dụng nó theo chương trình onStart - không may mắn ... – katit

+0

Hmmm. Tôi nghĩ chúng ta có vấn đề lớn hơn. Tôi đã cố gắng kế thừa từ parent = "android: Theme.Light.NoTitleBar.Fullscreen" và tôi đã nhận được hoạt động FULL SCREEN. Nhưng nút của tôi và kiểu ListView vẫn không được áp dụng .. Vì vậy, nó có vẻ như chủ đề "áp dụng" nhưng không phải tất cả các mục bên trong – katit

Trả lời

0

Chỉ vì tò mò. Hãy thử đổi tên Chủ đề của bạn thành một cái gì đó khác như FooBar.

Hãy nêu rõ điều này ở đây, nhưng đảm bảo nút của bạn đang sử dụng đúng kiểu.

3

Tôi phải xác định rõ ràng chủ đề cho mỗi <activity>.

0

EDIT: Tôi không chắc liệu đây có phải chỉ là lỗi đánh máy trong câu hỏi hay không, nhưng trong chủ đề chính của bạn, bạn tham khảo phong cách Theme.Black của Android không chính xác. Mã của bạn nói:

<style name="Theme" parent="android:style/Theme.Black"> 

Khi nó nên nói:

<style name="Theme" parent="@android:style/Theme.Black"> 

tôi cảm thấy như Lint hoặc trình biên dịch sẽ sủa tại bạn cho rằng trước khi chạy ứng dụng, nhưng có lẽ đó sẽ giúp đỡ.

+1

Miễn là tệp xml của bạn nằm trong thư mục giá trị, mọi thứ sẽ ổn và tên của tệp không tạo sự khác biệt. –

+0

Sau khi xem qua tài liệu chính thức, bạn đã chính xác. Tuy nhiên, tôi làm gián điệp một lỗi có thể khác. Đang cập nhật ngay bây giờ. – dennisdrew

2

According to this answer, có vẻ như không thể cung cấp layout_widthlayout_height thông qua các kiểu. Trong khi nó biên dịch, ngoại lệ nó tăng lên là:

E/AndroidRuntime(4117): java.lang.RuntimeException: Unable to start activity 
ComponentInfo{com.example/com.example.MainActivity}: 
java.lang.RuntimeException: Binary XML file line #79: You must supply a 
layout_width attribute. 

Tôi không chắc chắn tại sao, nhưng có thể có một cách giải quyết khác. As this question suggests, bạn có thể cung cấp tham chiếu làm tham số chiều rộng và chiều cao.

Một lần nữa, trải nghiệm của tôi là Android không hỗ trợ đúng cách cung cấp thứ nguyên tiện ích thông qua các kiểu.

20

Tôi cũng đã đấu tranh với điều này, và nghĩ rằng cuối cùng tôi đã tìm thấy những gì có thể đã được vấn đề - có lẽ nó là như nhau.

Tôi đã có chủ đề tùy chỉnh được xác định trong thư mục res\values, nhưng không nằm trong thư mục values-v11values-v14. Mà tôi nghĩ rằng nó làm cho nó như vậy mà trong một số thiết bị (đặc biệt là 2 tôi đã được thử nghiệm với!), Chủ đề không thể được áp dụng bởi vì nó không tồn tại.

Tôi bây giờ thấy các thuộc tính được đặt trong chủ đề tùy chỉnh của tôi (được áp dụng ở cấp ứng dụng) có hiệu lực.

+0

Cảm ơn bạn! Tôi vừa điên rồ cố gắng tìm ra những gì tôi đã làm sai. – Richard