尝试改变AlertDialog的外观,我用ThemedDialogFragment子类化了DialogFragment,并在onStart()中调用了以下代码:
那导致了一个NullPointerException,尽管我确定窗口中有一个id为alertTitle的视图。HierarchyViewer(*)工具证实了这一点。
尝试进行小的变体,例如:
或者
int alertTitleId = getResources().getIdentifier("alertTitle", "id", "android");
TextView alertTitle = (TextView) dialog.findViewById(alertTitleId);
alertTitle.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen._20ssp));
那导致了一个NullPointerException,尽管我确定窗口中有一个id为alertTitle的视图。HierarchyViewer(*)工具证实了这一点。
尝试进行小的变体,例如:
int alertTitleId = getResources().getIdentifier("android:id/alertTitle", null, null);
或者
TextView alertTitle = (TextView) dialog.getWindow().findViewById(alertTitleId);
或者
TextView alertTitle = (TextView) dialog.getWindow().getDecorView().findViewById(alertTitleId);
但是这些方法都没有起作用。
大家有什么想法吗?
(*): HierarchyViewer 显示我要找的 id 存在
P.S.: 我通过操作 themes.xml 解决了 AlertDialog 样式问题,我只是想知道为什么这种方法不起作用(我认为它应该可以)。 话虽如此,我会对每个告诉我如何设置 AlertDialog 样式的答案进行投票否定,因为这与本主题无关。谢谢。
P.P.S: 顺便说一下,我尝试了这种方法,编译 sdk 版本为 22,并在运行 Android Jelly Bean 4.3.1 的 Android 模拟器上进行了测试。
P.P.P.S: 在运行 Android 5.1.1 的模拟器上也没有成功。