自定义底部显示并没有标题栏的Dialog
2016-12-21 20:17
267 查看
需求:
*1. 对话框沉底显示对话框要想显示,实际上也是通过addView的方法显示的。
params.gravity = Gravity.Bottom
*2. 设置对话框显示自己定义的布局
复写onCreate,然后在里面指定当前你的dialog显示的内容 但是这么做的话,会在上面有一段空白的区域,这段区域是用来放置Title
*3. 去掉title
** 1. 查看系统的dialog使用的是什么属性,在构造方法里面,有这样的一句话
context.getTheme().resolveAttribute(com.android.internal.R.attr.dialogTheme, outValue, true);
**2. 它实际上找的是这个叫做dialogTheme的样式。
**3. 继续跟进系统的Theme样式, 在里面最终找到一个叫做noFrame样式
**4. 拷贝过来,声明自己的样式,然后给构造方法里面指定使用样式即可
一.写一个类继承Dialog
public class LocationStyleDialog extends Dialog { private WindowManager mWindowManager; private TextView mTitle; private ListView mListView; private Context mContext; private int[] mColors; public LocationStyleDialog(Context context) { // super(context); //设置自己的样式 this(context, R.style.LocationStyle); //获取window显示的属性 WindowManager.LayoutParams params = getWindow().getAttributes(); //设置沉底 params.gravity = Gravity.BOTTOM; //再次给属性赋值 getWindow().setAttributes(params); mContext = context; } protected LocationStyleDialog(Context context, boolean cancelable, OnCancelListener cancelListener) { super(context, cancelable, cancelListener); } public LocationStyleDialog(Context context, int themeResId) { super(context,themeResId); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.dialog_view); initView(); initData(); initListener(); } private void initView() { mTitle = (TextView) findViewById(R.id.tv_title); mListView = (ListView)findViewById(R.id.lv_list); } private void initData() { String [] mTitles = { "半透明","活力橙","卫士蓝","金属灰","苹果绿" }; mColors = new int[]{ R.drawable.shape_dialog_item01, R.drawable.shape_dialog_item02, R.drawable.shape_dialog_item03, R.drawable.shape_dialog_item04, R.drawable.shape_dialog_item05 }; LocationStyleAdapter adapter = new LocationStyleAdapter(mContext , mColors, mTitles); mListView.setAdapter(adapter); } public void initListener(){ mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { dismiss(); dismiss(); SharedPreUtil.putInt("color" , mColors[position] , mContext); } }); } }
二.在style.xml文件中创建自己的样式
<style name="LocationStyle" parent="Theme.AppCompat.Dialog"> <item name="android:windowBackground">@color/white</item> <item name="android:windowFrame">@null</item> <item name="android:windowContentOverlay">@null</item> <!--窗口的显示动画风格--> <item name="android:windowAnimationStyle">@null</item> <!--背景是否是暗淡--> <item name="android:backgroundDimEnabled">true</item> <!--窗口是否是半透明的--> <item name="android:windowIsTranslucent">true</item> <!--是否没有标题--> <item name="android:windowNoTitle">true</item> <!--点击外部是否关闭窗口--> <item name="android:windowCloseOnTouchOutside">true</item> </style>
相关文章推荐
- 自定义一个在底部显示的dialog
- 自定义Toaster,显示在标题栏底部
- 自定义dialog显示在底部
- 自定义Dialog菜单如何显示在底部?
- android 自定义Dialog背景透明及显示位置设置(转载)
- 自定义dialog包含一个显示图片的listview
- android 自定义Dialog背景透明及显示位置设置的方法
- Android--自定义标题栏之显示网页加载进度
- android 自定义Dialog背景透明及显示位置设置
- 自定义Dialog,去除系统默认黑色背景以及边框并设置dialog的显示位置
- 自定义Activity标题栏(Title bar)和窗体显示状态操作(requestWindowFeature()的应用)
- 自定义dialog包含一个显示图片的listview
- 自定义dialog显示位置和样式
- JQuery1.2.6 ui.dialog控件在IE6下标题栏显示不正常的问题解决
- 设置dialog显示,自定义时间到后dialog消失
- 设置dialog显示,自定义时间到后dialog消失
- 贴个自定义dialog中显示ExpandableListView 的代码
- Android 应用程序窗体显示状态操作(显示隐藏标题栏或自定义窗体大小)
- Android自定义标题栏:显示网页加载进度
- android 自定义Dialog背景透明及显示位置设置