Khi tôi chạy ứng dụng Android của tôi Tôi gọi một phương thức để kiểm tra xem các ứng dụng đang được chạy trên một tablet sử dụng:Setting Theme Programmactically Nguyên nhân nền đen
public boolean isTablet(Context context){
boolean xlarge = ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) == 4);
boolean large = ((context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK)== Configuration.SCREENLAYOUT_SIZE_MASK);
return(xlarge || large);
}
nếu phương pháp này trả về true (tức là đáp ứng thiết bị một trong những điều kiện này)
tôi đặt chủ đề của tôi đến một chủ đề Dialog qua:
setTheme(R.style.MyTheme);
nơi MyTheme
là một chủ đề mà được thừa hưởng từ cha mẹ 01.
Logic này hoạt động tốt tuy nhiên nó mang lại cho tôi hiệu ứng kỳ lạ trong nền. Mục đích gọi là hoàn toàn bôi đen, trong khi nếu tôi chỉ đặt chủ đề trong tệp kê khai thì nền chỉ hơi xám.
Update - Mã thêm
private Context mClassContext = this;
@Override
public void onCreate(Bundle savedInstanceState){
if(isTablet(mClassContext)){
setTheme(R.style.MyTheme);
}
super.onCreate(savedInstanceState);
setContentView(R.layout.myLayout);
}
Làm thế nào để tái tạo này?
Bạn thực hiện 'setTheme' trước' SetContentView() '? – kaderud
vâng, tôi có nên chuyển sang sau này không? Tôi đang gửi 'onCreate()' của tôi bây giờ –
tôi đã chuyển mã sang sau 'setContentView()' và nó không đặt chủ đề của tôi. Tôi đã thử điều này trước đây. Nếu bạn muốn chủ đề được thiết lập, bạn phải thực hiện nó trước khi gọi 'setContentView()'. Tôi chỉ không hiểu lý do tại sao nền hoàn toàn bị bôi đen. –