2011-12-18 27 views
11

Khi tôi gọi setTextAppearance(this, android.R.style.TextAppearance_Medium) theo cách lập trình, tôi nhận được phông chữ có kích thước trung bình với văn bản màu xám nhạt.Sự khác biệt giữa setTextAppearance từ mã so với tài nguyên

Tuy nhiên, khi tôi sử dụng android:textAppearance="@android:style/TextAppearance.Medium" trong xml thì tôi nhận được văn bản có kích thước giống nhau nhưng có màu đen.

Sự khác biệt giữa những điều này là gì?

Phần liên quan của tập tin xml trông như sau:

<Button 
    android:id="@+id/button1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:textAppearance="@android:style/TextAppearance.Medium" 
    android:text="Button" /> 

Mã này trông như thế này:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Button button = (Button)findViewById(R.id.button1); 
    button.setText("This is a long text"); 
    //button.setTextAppearance(this, android.R.style.TextAppearance_Medium); 
} 

Trả lời

1

Không nên khác nhau. Cách duy nhất để có được một màu sắc khác nhau là một trong hai:

1) thay đổi màu sắc văn bản programatically sau setTextAppearance bạn

hoặc

2) file xml của bạn có chứa một android: Format với màu đen.

Nếu mã xml của bạn chứa thuộc tính android: textColor, Android sẽ sử dụng thuộc tính đó, chứ không phải thuộc tính được xác định trong xml. Nếu bạn setTextAppearance theo cách thủ công, màu của kiểu sẽ được sử dụng.

Do đó, bạn có thể có android: Format = "# 000000" trong xml cho yếu tố đó

+0

nope, không thay đổi màu sắc văn bản bất cứ nơi nào – user204884

+0

và cũng không có android : textColor = "" trong xml? – Entreco

+0

không - hãy xem câu hỏi cập nhật bao gồm mã số – user204884

8

câu trả lời đúng là setTextAppearance(context, android.R.style.TextAppearance_Large);

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