Android dialog 对话框自定义布局
2015-12-25 19:06
453 查看
搞Android四年了 自定义dialog布局一直都写不好。。
今天来汇总一下
Activity中用到自定义的dialog
一般情况下
子类调用
显示出来的效果图
这个是布局。。。。。。。。。。。。。。。。
---------------------------------------------------------------------------
可以看到对话框的宽度基本上充满屏幕了,然后高度也比内容区的高
网上查了一下解决办法, 然后经过部分代码的重构 整理如下
边框的问题基本上解决了
但是除了内容区之外的区域有点黑。。如果不想要背景变黑,则需要设置一下 dialog 的theme
如果 android:backgroundDimAmount 改为 0.0 则除了内容区域以外的区域都是透明的
今天来汇总一下
Activity中用到自定义的dialog
一般情况下
public class BaseDialog extends Dialog { public BaseDialog(Context context) { super(context); } public BaseDialog(Context context, int layout) { super(context); setContentView(layout); } }
public class AppLoading extends BaseDialog { /** * 需要传入一个Activity对象 * * @param context */ public AppLoading(Context context) { super(context, R.layout.app_loading); } }
子类调用
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); AppLoading loading = new AppLoading(getContext()); loading.show(); }
显示出来的效果图
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="200dip" android:layout_height="150dip" android:layout_gravity="center" android:gravity="center" android:orientation="vertical" android:background="@android:color/white" android:padding="10dip"> <ProgressBar android:layout_width="wrap_content" android:layout_height="wrap_content"/> <TextView android:id="@+id/app_loading_message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="5dip" android:gravity="center_horizontal" android:text="content"/> </LinearLayout>
这个是布局。。。。。。。。。。。。。。。。
---------------------------------------------------------------------------
可以看到对话框的宽度基本上充满屏幕了,然后高度也比内容区的高
网上查了一下解决办法, 然后经过部分代码的重构 整理如下
@Override public void show() { Window win = getWindow(); win.getDecorView().setPadding(0, 0, 0, 0); WindowManager.LayoutParams lp = win.getAttributes(); lp.width = WindowManager.LayoutParams.WRAP_CONTENT; lp.height = WindowManager.LayoutParams.WRAP_CONTENT; win.setAttributes(lp); win.setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); win.setLayout(lp.width, lp.height); super.show(); }
边框的问题基本上解决了
但是除了内容区之外的区域有点黑。。如果不想要背景变黑,则需要设置一下 dialog 的theme
<style name="app_loading_theme" parent="android:Theme.Dialog"> <!-- 是否支持透window明度 --> <item name="android:windowIsTranslucent">true</item> <!-- window背景颜色 --> <item name="android:windowBackground">@android:color/transparent</item> <!-- 屏幕内容区域以外的背景是否可以设置灰度值(与backgroundDimAmount搭配使用) --> <item name="android:backgroundDimEnabled">true</item> <!-- 灰度值 --> <item name="android:backgroundDimAmount">0.2</item> </style>构造方法的时候使用Dialog 的构造方法 public Dialog(Context context, int theme)
public BaseDialog(Context context, int theme, int layout) { super(context, theme); setContentView(layout); }
如果 android:backgroundDimAmount 改为 0.0 则除了内容区域以外的区域都是透明的
相关文章推荐
- android studio比较长用的几款插件
- android studio比较长用的几款插件
- android studio比较长用的几款插件
- 我为什么主张反对使用Android Fragment
- Android -- LinearLayout
- Android studio开发NDK
- Android Screen Monitor使用
- Android如何获得系统(system)权限
- android加固系列—2.加固前先要学会破解,调试内存值修改程序走向
- Android studio 导入lib下的jar文件
- Android中你应该知道的设计模式
- Android studio导入第三方类库
- Android 触摸事件处理机制
- Android 给scrollView添加毛玻璃效果的标题栏
- Android Studio导入第三方类库的方法
- Android调用系统相机拍照并且裁剪指定大小
- Android 混淆后在友盟中无定位错误位置 Unknown Source
- Android学习 之 ColorStateList按钮文字变色
- Android Studio中如何打JAR包
- Android 悬浮窗口