Áp dụng một chủ đề cho một hoạt động trong Android?


86

Tôi biết cách áp dụng một chủ đề cho toàn bộ ứng dụng, nhưng tôi sẽ đi đâu để áp dụng một chủ đề cho chỉ một hoạt động?

Câu trả lời:


158

Bạn có thể áp dụng chủ đề cho bất kỳ hoạt động nào bằng cách đưa android:themevào <activity>bên trong tệp kê khai.

Ví dụ:

  1. <activity android:theme="@android:style/Theme.Dialog">
  2. <activity android:theme="@style/CustomTheme">

Và nếu bạn muốn thiết lập chủ đề theo chương trình thì hãy sử dụng setTheme()trước khi gọi setContentView()super.onCreate()phương thức bên trong onCreate()phương thức.


1
Còn về chủ đề vô hiệu hóa thì sao? trên một hoạt động đơn lẻ
Yousha Aleayoub

@Yousha Aleayoub: bạn đã thử đặt chủ đề khác chưa?
Yannick

Không, nhưng tôi chỉ muốn vô hiệu hóa / loại bỏ các chủ đề và làm cho nó cơ bản ... :)
Yousha Aleayoub

1
và trong hoạt động sử dụng xml tools:context= ".YourAtivityName"trong thư mục gốc
Faisal Naseer

34

Để đặt nó theo chương trình trong Activity.java:

public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setTheme(R.style.MyTheme); // (for Custom theme)
  setTheme(android.R.style.Theme_Holo); // (for Android Built In Theme)

  this.setContentView(R.layout.myactivity);

Để đặt trong Phạm vi ứng dụng trong Manifest.xml (tất cả các hoạt động):

 <application
    android:theme="@android:style/Theme.Holo"
    android:theme="@style/MyTheme">

Để đặt trong Phạm vi hoạt động trong Manifest.xml (hoạt động đơn lẻ):

  <activity
    android:theme="@android:style/Theme.Holo"
    android:theme="@style/MyTheme">

Để tạo một chủ đề tùy chỉnh, bạn sẽ phải khai báo chủ đề trong tệp themes.xml và đặt kiểu trong tệp styles.xml.


1
Còn về chủ đề vô hiệu hóa thì sao? trên một hoạt động đơn lẻ
Yousha Aleayoub

2
Tại sao bạn đã thêm hai android:themethuộc tính?
Flame of udun

@Vineet Kaushik, android:theme="@android:style/Theme.Holo"là cú pháp để thêm chủ đề cài sẵn trên Android. android:theme="@style/MyTheme"là cú pháp để thêm chủ đề tùy chỉnh được mô tả trong styles.xmltệp của bạn . Trong AndroidManifest.xmltệp thực tế của bạn, bạn sẽ chỉ sử dụng một hoặc cách khác cho mỗi phần, không phải cả hai.
Soren Stoutner

1
@Yousha Aleayoub, để tắt chủ đề, hãy tạo một chủ đề trống trong styles.xmlvà sau đó sử dụng cú pháp android:theme=@style/MyBlankTheme.
Soren Stoutner

Có vẻ như việc đặt nhiều hơn một chủ đề tùy chỉnh trong tệp kê khai không hoạt động. Nếu bạn thêm chủ đề ở cấp ứng dụng và chủ đề thứ hai ở cấp hoạt động, thì chỉ một ứng dụng được sử dụng. Tôi đã cố gắng thêm một chủ đề cho mỗi hoạt động với "giao diện" khác nhau nhưng không có kết quả tốt.
Peter

8

Trước khi bạn gọi setContentView(), hãy gọi setTheme(android.R.style...)và chỉ cần thay thế ... bằng chủ đề mà bạn muốn (Chủ đề, Theme_NoTitleBar, v.v.).

Hoặc nếu chủ đề của bạn là một chủ đề tùy chỉnh, thì hãy thay thế toàn bộ, để bạn nhận được setTheme(yourThemesResouceId)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.