AlertDialog 设置大背景及大小要在show()之后才有效果
小米系统AlertDialog有个黑边框且显示在屏幕顶部。去掉黑边框可以用
dialog.getWindow().setBackgroundDrawableResource(int recrous);
UserListWin.this.commitDialog.getWindow().setBackgroundDrawableResource(R.drawable.tou);//设置dialog背景要在show()之后否则会报错
R.drawable.tou 为一张透明图片
设置了dialog大小
UserListWin.this.commitDialog.getWindow().setLayout(400, 500);//设置Dialog大小要在show()之后否则没效果(设置了dialog大小后,对于小米手机addContentView中的布局文件可以居中显示。(开始语音识别显示的图标不能再dialog中居中显示))
设置dialog显示位置
Window w=UserListWin.this.commitDialog.getWindow();
android.view.WindowManager.LayoutParams lp=w.getAttributes();
lp.y=150;
lp.x=100;
dialog.setContentView(R.layout.d);//ad.setContentView(int layoutResID);要在show()之后添加才有效果,否则报错。ad.setContentView(View view)可以在show()之前添加
参考:
来自:http://wbj05791467.blog.163.com/blog/static/12032969720121071553666/
关于AlertDialog的自定义样式
2012-11-07 16:10:35| 分类: Android|举报|字号 订阅
android <wbr>AlertDialog <wbr>Dialog显示位置、大小,背景
android <wbr>AlertDialog <wbr>Dialog显示位置、大小,背景
下载LOFTER客户端
最近两周真是闲得慌,项目上都没我啥事,最多就是改改字符串这种没技术含量活儿。还好我知道空闲的时候该干什么,那就是继续编写我的音乐播放器。
我是仿造天天动听来编写自己的播放器的,当然功能远没有它的完善。最近想实现天天动听上的一个功能:在歌曲列表中的item添加一个按钮,点击此按钮弹出一个AlertDialog,该AlertDialog中有一个TextView,下面是一个ListView。Textview用来显示该item所对应的歌曲的名称,ListView则是一些选项(歌曲信息,移除,设为铃声什么的):
关于AlertDialog的自定义样式 - peculiar - art of devil
好吧,刚刚用hierarchyviewer看了以下天天动听的布局,发现是个PopupWindow。
我用的是自定义的一个AlertDialog。但是从昨天开始直到现在,我才获得了自己想要的效果。
关于如何将ListView绑定到AlertDialog上,可以用以下几种方法实现:
一、AlertDialog.Builder.setItems(CharSequence[] items, OnClickListenerlistener)。items就是你想要添加到AlertDialog的一个list,listener是为list设置的监听器,你只需在里面添加自己想要的动作即可。该方法比较简单。
二、AlertDialog.Builder.setAdapter (ListAdapter adapter,DialogInterface.OnClickListener listener)。这里你需要先定义一个ListAdapter,Adapter可以说是将数据绑定到UI的桥梁,功能很强大,listener与第一种方法里的一样。而且对于我这种菜鸟来说掌握它的用法与比较难。
关于如何自定义AlertDialog样式:
一、AlertDialog.Builder.setView(View view)。这个view是事先从定义好的XML文件里获取的,关于如何获取可以用下面代码实现:
LayoutInflater inflater = LayoutInflater.from(Context context);
View view = inflater.inflate(R.layout.alertdialog, null);//这里的R.layout.alertdialog即为你自定义的布局文件
二、view.Window.setContentView(View view)。主要代码如下:
AlertDialog mAlertDialog = builder.create();
mAlertDialog.show();
mAlertDialog.getWindow().setContentView(view);
关于两者的区别,大家可以看这个链接:http://www.x2x1.com/show/6040883.aspx。
大致就是setView()只会覆盖AlertDialog的Title与Button之间的那部分,而setContentView()则会覆盖全部。但是否真的是这样呢?还有待验证。
还有一点要注意的是:setContentView()必须放在show()的后面,不然会报错。如果你要在代码里修改AlertDialog的大小,可以用以下代码实现:
mAlertDialog.getWindow().setLayout(150, 320);
但是这段代码同样需要放在show()的后面,不然你的改动会没有效果。
如果可以成功地完成上述步骤,你差不多就可以自定义一个自己想要的AlertDialog了。但遗憾的是,我始终不知道怎么自定义AlertDialog的Title。最后我在http://blog.csdn.net/chuekup/article/details/8018513找到了一些思路:
1. 先自定义一个AlertDialog布局alertdialog.xml,包括两部分:一个textView 用来显示Title;一个ListView显示相关的选项:
相关文章
- Android Dialog 设置字体大小
- android studio 设置字体大小和背景
- 关于android系统Dialog如何设置字体大小
- Android 设置TabLayout背景和字体大小
- [Android] Android自定义对话框(Dialog)位置,大小
- android 自定义Dialog背景透明及显示位置设置(转载)
- Android中改变dialog的显示的位置和大小
- android AlertDialog Dialog显示位置、大小,背景
- android中的提示框:Dialog以及改变Dialog的显示位置
- Android之使用参数改变ProgressDialog的位置、大小、背景透明度、屏幕透明度