2013-02-22 40 views
19

Tôi đang tạo một textView theo chương trình. Có cách nào mà tôi có thể thiết lập phong cách của textView này? Một cái gì đó tương tự nhưLàm cách nào để đặt kiểu textView theo chương trình?

style="@android:style/TextAppearance.DeviceDefault.Small" 

mà tôi sẽ sử dụng nếu tôi có tệp layout.xml.

+0

bạn không thể đặt kiểu của bất kỳ chế độ xem nào theo thực tế. nhưng bạn có thể đặt các thuộc tính riêng lẻ của chế độ xem –

+0

Bản sao có thể có của [Android - đặt TextView TextStyle theo lập trình?] (http://stackoverflow.com/questions/7919173/android-set-textview-textstyle-programmatically) –

Trả lời

34

Bạn không thể đặt theo kiểu lập trình kiểu của Chế độ xem nhưng bạn có thể làm điều gì đó như textView.setTextAppearance(context, android.R.style.TextAppearance_Small);.

+0

Phương pháp này được đánh dấu là không dùng nữa. – pkuszewski

+7

Sử dụng 'if (Build.VERSION.SDK_INT <23) { textView.setTextAppearance (ngữ cảnh, android.R.style.TextAppearance_Small); } else { textView.setTextAppearance (android.R.style.TextAppearance_Small); } ' – Nedko

27

Hiện tại, bạn không thể đặt kiểu của Chế độ xem theo chương trình.

Để làm được việc này bạn có thể tạo một tập tin xml mẫu bố trí với phong cách giao, ví dụ như trong res/layout tạo tvtemplate.xml như với các nội dung sau đây:

<?xml version="1.0" encoding="utf-8"?> 
<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="This is a template" 
     style="@android:style/TextAppearance.DeviceDefault.Small" /> 

sau đó thổi phồng này để nhanh chóng TextView mới của bạn:

TextView myText = (TextView)getLayoutInflater().inflate(R.layout.tvtemplate, null); 
+1

Tôi thích giải pháp này tốt hơn câu trả lời được chấp nhận vì nó hỗ trợ kiểu như OP được yêu cầu (và tôi muốn). Bên cạnh đó, nó luôn luôn cảm thấy như vậy .... sai .... để sử dụng một nhà xây dựng android.widget. –

1

Đối Lần được tạo ra tại thời gian chạy (trong mã), bạn có thể vượt qua phong cách để xây dựng: View(Context, AttributeSet, int)

Trong trường hợp khác, bạn phải gọi varios phương pháp để thay đổi apperance

4

Hãy thử điều này

textview.setTextAppearance(context, R.style.yourstyle); 

điều này có thể không hoạt động Thử Tạo xml với chế độ xem văn bản như thế này

textviewstyle.xml 

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     style="@android:style/TextAppearance.DeviceDefault.Small" /> 

Để có được phong cách mong muốn thổi phồng xml chứa TextView

TextView myText = (TextView)getLayoutInflater().inflate(R.layout.tvstyle, null); 
3

Trên thực tế, điều này có thể là cấp API 21.

TextView có 4 parameter constructor:

TextView (Context context, 
      AttributeSet attrs, 
      int defStyleAttr, 
      int defStyleRes) 

Giữa hai các thông số không cần thiết trong trường hợp này. Đoạn mã sau tạo một TextView trực tiếp trong một hoạt động và chỉ định nghĩa tài nguyên phong cách của nó:

TextView myStyledTextView = new TextView(this, null, 0, R.style.my_style); 
0
@Deprecated 
public void setTextAppearance(Context context, @StyleRes int resId) 

phương pháp này không được chấp như của Android SKD 23.

bạn có thể sử dụng phiên bản an toàn:

if (Build.VERSION.SDK_INT < 23) { 
    super.setTextAppearance(context, resId); 
} else { 
    super.setTextAppearance(resId); 
} 
Các vấn đề liên quan