我想要存档的内容:我想要一个带有自定义视图的对话框,但我想要AlertDialog中的标准图标,标题,按钮.
我正在做的是这个自定义对话框类:
public class CustomDialog extends AlertDialog.Builder { private Activity activity; private VIEw root; public CustomDialog(Activity context) { super(context); this.activity = context; } public voID setVIEw(int layoutResID) { LayoutInflater inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); root = inflater.inflate(layoutResID, (VIEwGroup) activity.findVIEwByID(R.ID.dialog_root), false); ScrollVIEw scroller = new ScrollVIEw(activity); scroller.addVIEw(root); setVIEw(scroller); } public voID setCustomVIEw(VIEw v) { ScrollVIEw scroller = new ScrollVIEw(activity); scroller.addVIEw(v); setVIEw(scroller); } public VIEw getRoot() { return root; } @OverrIDe public AlertDialog create() { AlertDialog dialog = super.create(); dialog.getwindow().getAttributes().wIDth = LayoutParams.MATCH_PARENT; return dialog; }}
这非常好,期望在Honeycomb和Honeycomb设备上TextVIEw颜色不正确.我正在使用Holo.light主题,因此标准文本颜色为黑色,但也是预蜂窝设备上对话框的背景颜色.在Honeycomb设备上,对话框背景为白色.所以我做的是,我在values文件夹的styles.xml中添加了dialogTextcolor = white,在values-v11文件夹中添加了dialogTextcolor = black.然后我必须将style属性添加到我在自定义对话框中使用的每个TextVIEw.这个问题一直持续到ICS,而且很清楚为什么 – > V11.我可以改变它,但是我希望有一个自定义对话框,它可以完成所有 *** 作:基于应用程序主题,对话框的宽度,预蜂窝,Honeycomb,ICS(以及将来会出现的任何内容)的文本颜色, AlertDialog中的标准按钮,标题,图标.
解决方法:
这里的诀窍是Context与主题相关联.该主题决定了各种事物,如默认文本颜色等.
在Honeycomb Dialogs之前总是有相同的主题,无论它们是从浅色或深色主题活动生成的,除了列表对话框是深色背景,浅色前景.在Honeycomb和Forward中,Dialogs具有不同的主题,这些主题由生成它们的Activity确定.
在对话框中膨胀内容时,请始终使用Dialog#getContext()方法返回的Context,而不是生成Dialog的Activity.而不是用于获取上面的LayoutInflater的代码行,请尝试:
LayoutInflater inflater = LayoutInflater.from(getContext());
编辑:看起来你正在使用AlertDialog.Builder而不是Dialog. AlertDialog.Builder在API 11(AndroID 3.0,a.k.a.Honeycomb)中为此目的添加了一个getContext()方法,但在此之前它不存在.您可以使用ContextthemeWrapper为旧设备构建自己的主题上下文.只是确保你永远不会尝试在旧版本的平台上调用该方法.您可以通过简单的检查来保护它:
Context themedContext;if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { themedContext = getContext();} else { themedContext = new ContextthemeWrapper(activity, androID.R.style.theme_Dialog);}LayoutInflater inflater = LayoutInflater.from(themedContext);
总结 以上是内存溢出为你收集整理的android – 具有标准图标,标题和按钮的平台版本独立自定义对话框全部内容,希望文章能够帮你解决android – 具有标准图标,标题和按钮的平台版本独立自定义对话框所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)