自定義Dialog的時候够委,透明背景,添加輸入框,自動彈出軟鍵盤且不能遮蓋住輸入框等淤翔,添加如下樣式解決:
<!--不帶輸入框-->
<style name="dialog" parent="@android:style/Theme.Holo.Light.Dialog">
<item name="android:windowFrame">@color/transparent</item><!-- 邊框 -->
<item name="android:windowIsFloating">true</item><!-- 是否浮現(xiàn)在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><!-- 是否浮現(xiàn)在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); //這里創(chuàng)建dialog并應(yīng)用我們自定義的主題
mDialog.setContentView(rootView);
Window dialogWindow = mDialog.getWindow();
dialogWindow.setGravity(Gravity.BOTTOM);
dialogWindow.setWindowAnimations(R.style.DialogAnimStyle);
WindowManager.LayoutParams lp = dialogWindow.getAttributes();
//設(shè)置寬高
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();