自定义Dialog的时候,透明背景,添加输入框,自动弹出软键盘且不能遮盖住输入框等,添加如下样式解决:
<!--不带输入框-->
<style name="dialog" parent="@android:style/Theme.Holo.Light.Dialog">
<item name="android:windowFrame">@color/transparent</item><!-- 边框 -->
<item name="android:windowIsFloating">true</item><!-- 是否浮现在activity之上 -->
<item name="android:windowIsTranslucent">false</item><!-- 半透明 -->
<item name="android:windowNoTitle">true</item><!-- 无标题 -->
<item name="android:windowBackground">@color/transparent</item><!-- 自己想要的背景 -->
<item name="android:backgroundDimEnabled">true</item><!-- 模糊 -->
</style>
<!--带输入框-->
<style name="inputDialog" parent="@android:style/Theme.Holo.Light.Dialog">
<item name="android:windowFrame">@color/transparent</item><!-- 边框 -->
<item name="android:windowIsFloating">true</item><!-- 是否浮现在activity之上 -->
<item name="android:windowIsTranslucent">false</item><!-- 半透明 -->
<item name="android:windowNoTitle">true</item><!-- 无标题 -->
<item name="android:windowBackground">@color/transparent</item><!-- 自己想要的背景 -->
<item name="android:backgroundDimEnabled">true</item><!-- 模糊 -->
<item name="android:windowSoftInputMode">stateAlwaysVisible</item><!--显示软件盘-->
</style>
样式具体使用:
LinearLayout rootView = (LinearLayout) LayoutInflater.from(builder.mActivity).inflate(R.layout.share_dialog, null);
initViews(rootView);
initListener();
mDialog = new Dialog(builder.mActivity, R.style.ShareDialogTheme); //这里创建dialog并应用我们自定义的主题
mDialog.setContentView(rootView);
Window dialogWindow = mDialog.getWindow();
dialogWindow.setGravity(Gravity.BOTTOM);
dialogWindow.setWindowAnimations(R.style.DialogAnimStyle);
WindowManager.LayoutParams lp = dialogWindow.getAttributes();
//设置宽高
lp.width = (int) getResources().getDisplayMetrics().widthPixels;
rootView.measure(0, 0);
lp.height = rootView.getMeasuredHeight();
lp.dimAmount = 0.75f; //半透明背景的灰度 在0.0f和1.0f之间,0.0f完全不暗,1.0f全暗
dialogWindow.setAttributes(lp);
mDialog.setCancelable(true);
mDialog.show();