Vấn đề
luân phiên một thiết bị từ một bức chân dung một khung PreferenceScreen
đến một cảnh quan hai cửa sổ PreferenceScreen
, gây ra cảnh quan để chỉ hiển thị như một cửa sổ. KHÔNG xảy ra khi xem màn hình tiêu đề.Các vấn đề với màn hình sở thích dual-pane
Thiết lập
Đây chỉ dành cho ICS và chỉ lên. Tôi có PreferenceActivity
tải preference-headers
. Mỗi tiêu đề liên kết với một số Fragment
, lần lượt tải PreferenceScreen
. Khá chạy của mil.
Chi tiết
Mọi thứ hoạt động tốt cho đến khi tôi nhận thấy Android sẽ chỉ tự động chuyển sang giao diện hai cửa sổ cho một số màn hình nhất định. Sau một số nghiên cứu tôi đã học được từ một số Commonsware post rằng Android sẽ chỉ làm như vậy đối với sw720dp. Bit của một sự lãng phí nếu bạn hỏi tôi vì nhiều thiết bị def có rất nhiều chỗ cho hai-panes. Vì vậy, tôi đã ghi đè phương thức onIsMultiPane()
để trả về true cho w600dp trở lên. Làm việc như một say mê .... kinda.
Đưa ra một thiết bị sẽ hiển thị một cửa sổ theo chiều dọc và khung kép ở chế độ ngang; xem các tiêu đề theo chiều dọc và xoay ngang, hoạt động tốt. Tuy nhiên, nếu người dùng chọn một tiêu đề và tải màn hình tiếp theo của nó ở chế độ dọc, sau đó xoay để ngang thiết bị sẽ ở lại một cửa thay vì chuyển về chế độ hai ngăn. Nếu sau đó bạn quay trở lại điều hướng đến màn hình tiêu đề, nó sẽ trở lại giao diện hai ngăn ngoại trừ việc nó sẽ không chọn trước tiêu đề. Kết quả là ngăn chi tiết vẫn trống.
Hành vi này có dự định không? Dù sao để làm việc xung quanh nó? Tôi cũng đã cố gắng ghi đè onIsHidingHeaders()
nhưng điều đó đã khiến mọi thứ hiển thị màn hình trống.
Mã
Preference Hoạt động:
public class SettingsActivity extends PreferenceActivity {
@Override
public void onBuildHeaders(List<Header> target) {
super.onBuildHeaders(target);
loadHeadersFromResource(R.xml.preference, target);
}
@Override
public boolean onIsMultiPane() {
return getResources().getBoolean(R.bool.pref_prefer_dual_pane);
}
}
Một Preference Tiêu đề Frag:
public class ExpansionsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_expansions);
}
public static ExpansionsFragment newInstance() {
ExpansionsFragment frag = new ExpansionsFragment();
return frag;
}
}
gì "nói" một góc độ debug? –
Bạn có một giá trị chứa trạng thái "hiển thị". –
PreferenceActivity xử lý các thay đổi về mức hiển thị. Tôi đặc biệt không thay đổi bất kỳ thứ gì. Các mã trên là nghĩa đen tất cả tôi đang làm. –