Để hiểu tốt nhất những gì đang xảy ra ở đây bạn có thể tham khảo đoạn mã này từ mã nguồn cho lớp PreferenceScreen:
@Override
protected void onClick() {
if (getIntent() != null || getPreferenceCount() == 0) {
return;
}
showDialog(null);
}
private void showDialog(Bundle state) {
Context context = getContext();
ListView listView = new ListView(context);
bind(listView);
// Set the title bar if title is available, else no title bar
final CharSequence title = getTitle();
Dialog dialog = mDialog = new Dialog(context, TextUtils.isEmpty(title)
? com.android.internal.R.style.Theme_NoTitleBar
: com.android.internal.R.style.Theme);
dialog.setContentView(listView);
if (!TextUtils.isEmpty(title)) {
dialog.setTitle(title);
}
dialog.setOnDismissListener(this);
if (state != null) {
dialog.onRestoreInstanceState(state);
}
// Add the screen to the list of preferences screens opened as dialogs
getPreferenceManager().addPreferencesScreen(dialog);
dialog.show();
}
Cách mà tôi làm việc xung quanh nó là để thiết lập màu nền cha mẹ bằng cách ghi đè lên chế độ Xem trước trong tùy chọn đầu tiên được thêm vào màn hình tùy chọn. Tất nhiên điều này đòi hỏi một số mã tùy chỉnh nhưng nó không phải terribly phức tạp, ví dụ để thiết lập một nền trắng:
package com.justinbuser.livewallpapers;
import android.preference.PreferenceCategory;
public class VideoChooserPreferenceCategory extends PreferenceCategory{
public VideoChooserPreferenceCategory(Context context) {
super(context);
}
@Override
protected View onCreateView(ViewGroup parent)
{
parent.setBackgroundColor(0xFFFFFFFF);
return super.onCreateView(parent);
}
}
Bạn sẽ thì tất nhiên cần phải sử dụng loại tùy chỉnh bằng cách thay đổi xml của bạn, ví dụ:
<PreferenceScreen android:title="main preferences">
<PreferenceScreen android:title="sub screen">
<com.justinbuser.livewallpapers.VideoChooserPreferenceCategory android:title="sub screen category" />
</PreferenceScreen>
</PreferenceScreen>
Ngoài ra, nếu bạn thấy Android PreferenceScreen thay đổi chủ đề dựa trên việc tiêu đề có được đặt hay không, tức là nếu tựa đề tồn tại, nó sẽ bật chủ đề bao gồm thanh tiêu đề. Vì vậy, nếu bạn không muốn thanh tiêu đề, bạn nên tránh đặt tiêu đề preferencescreen và đặt nó tĩnh trong xml hoặc động thông qua mã.
Nguồn
2012-04-17 03:57:42
Bạn có thể hiển thị ảnh chụp màn hình giống như trước khi bạn thêm Màn hình ưu tiên thứ hai và sau đó không? – CaseyB
Đây là màn hình chính của tôi http://snapplr.com/fqxc, Vì vậy, khi tôi nhấp vào "Herinneringen" (tiếng Hà Lan cho thông báo) nó cho tôi thấy http://snapplr.com/gjzd này (Và không có mũi tên nào bên cạnh Herinneringen, nơi nên có một!) Có vấn đề gì ở đây? – wouter88
Bạn đang tải một hoạt động mới hay chỉ là bạn đang tăng cường và phủ một chế độ xem? – CaseyB