我將舊對話框切換爲DialogFragment,但主題和樣式似乎不起作用。我使用兼容性庫v4中的DialogFragment,並且在我嘗試調用setStyle(style,theme)的onCreate方法中使用DialogFragment;有很多不同的主題,但對話框始終在運行Android 4.0.3的模擬器中顯示爲「舊」對話框(即,它不會顯示在Holo主題中)。主題不適用於Android上的DialogFragment
還有什麼我應該做的?使用兼容性庫是否會禁用Holo主題或任何其他內容?如果是這種情況,我應該創建兩個DialogFragments,一個用於舊版本,一個用於較新版本?
謝謝!
下面是我的對話框的(簡化)代碼。我已經嘗試了Theme_Holo_Dialog_NoActionBar和Theme_DeviceDefault_Dialog_NoActionBar,但Android 4仿真器始終將對話框顯示爲「舊」對話框,而不是使用Holo主題。我究竟做錯了什麼? :(
[...]
import android.support.v4.app.DialogFragment;
[...]
public class AlertDialogFragment extends DialogFragment {
public static AlertDialogFragment newInstance(int id) {
AlertDialogFragment f = new AlertDialogFragment();
Bundle args = new Bundle();
args.putInt("id", id);
f.setArguments(args);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int style = DialogFragment.STYLE_NORMAL, theme = 0;
theme = android.R.style.Theme_Holo_Dialog_NoActionBar;
setStyle(style, theme);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
mId = getArguments().getInt("id");
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
.setTitle(mTitle)
.setMessage(mMessage)
.setPositiveButton(getString(R.string.btn_ok), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dismiss();
}
});
return builder.create();
}
,您在繼承什麼風格,展現我們也styles.xml你有什麼targetSdk?它需要超過11 – Blundell
我的目標是SDK 14,我甚至沒有使用styles.xml文件,我只是調用setStyle(style,theme);在DialogFragment的onCreate方法中嘗試風格和主題的多種組合。 例如,在我的「舊」對話框中,我使用了android.R.style.Theme_DeviceDefault_Dialog_NoActionBar,它在ICS仿真器中顯示爲Holo,但現在使用的是不同的主題。 – LuTHieR
嘗試隱式使用Holo:'android.R.style.Theme_Holo_Dialog' – Blundell