2011-11-23 27 views
6

tôi có thể thay đổi nút xuất hiện văn bản bằng cách đặt nó ngay trong đối tượng như thế này:nút Android textAppearance

<Button 
     android:id="@+id/login_btn_bypass" 
     android:textSize="15dp" 
     android:textColor="#878787" 
     android:textStyle="bold" /> 

nhưng không phải khi sử dụng textAppearance trong phong cách

// in layout xml 
<Button 
    android:id="@+id/login_btn_login" 
    android:textAppearance="@style/login_button_text_appearance" /> 

// in style definition 
<style name="login_button_text_appearance"> 
    <item name="android:textSize">15dp</item> 
    <item name="android:textColor">#a7a7a7</item> 
    <item name="android:textStyle">bold</item> 
</style> 

có ai biết tại sao?

Trả lời

9

tôi nghĩ rằng bạn nên sử dụng:

style = "@style/login_button_text_appearance"

thay vì

android:textAppearance="@style/login_button_text_appearance"

các android:textAppearance chỉ là một attribut giống như bất kỳ attribut khác (android:textSize,android:textStyle ... vv), và giá trị của kiểu không được chấp nhận làm giá trị cho số đó là

EDIT:

<Button 
    android:id="@+id/login_btn_login" 
    style="@style/login_button_text_appearance" /> 
+0

Tôi không thấy bất kỳ android: style on Button nào, tôi nên áp dụng đề xuất của bạn như thế nào? –

+0

không có thuộc tính có tên android: style, nó đặt tên trực tiếp theo phong cách, xem chỉnh sửa của tôi – Houcine

11

Các giá trị của thuộc tính được định nghĩa sử dụng textAppearance được áp dụng trước các giá trị của các thuộc tính trong một phong cách. A Button là một TextView với kiểu được áp dụng và kiểu mặc định của Nút sẽ ghi đè văn bản của bạnAppearance (ví dụ Android 2.3 sẽ đặt thành? Android: attr/textAppearanceSmallInverse) và textColor.

textAppearance excepts phong cách như các giá trị, android:textAppearance="@style/login_button_text_appearance" là cách bình thường đúng để thiết lập một textAppearance, nhưng không phải cho một Button:

Nếu bạn thay đổi màu sắc văn bản của một Button, bạn cũng nên thực thi một nền tùy chỉnh hình ảnh bởi vì nếu bạn không, một thiết bị sẽ sử dụng một hình ảnh nền tối (motorola defy) và một thiết bị khác sẽ sử dụng một hình ảnh ánh sáng (mong muốn HTC) có thể làm cho văn bản khó đọc.