自定义Dialog,背景,大小,位置。
1.要替换原有dialog的背景需要:使用自己的style,R.style.xxxx.xml
2.修改大小和位置需要:修改它的Layoutparams,就像修改view的Layoutparams类似:
Window dialogWindow=this.getWindow();
WindowManager.LayoutParams lp = dialogWindow.getAttributes();
lp.gravity=Gravity.CENTER_VERTICAL;
DisplayMetrics d =context.getResources().getDisplayMetrics(); // 获取屏幕宽、高用
lp.width = (int) (d.widthPixels * 0.8); // 宽度设置为屏幕的0.8
dialogWindow.setAttributes(lp);
例子:
/**
* 提示用户-显示命令
*/
public class VoiceTipDialog extends AlertDialog implements View.OnClickListener {
private TextView mContent;
private Button mBtnShow, mBtnTry;
private Context context;
public VoiceTipDialog(Context context, int themeResId) {
super(context, themeResId);
this.context=context;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_voice_tip);
initView();
setlistener();
}
private void setlistener() {
mBtnShow.setOnClickListener(this);
mBtnTry.setOnClickListener(this);
}
private void initView() {
Window dialogWindow=this.getWindow();
WindowManager.LayoutParams lp = dialogWindow.getAttributes();
lp.gravity=Gravity.CENTER_VERTICAL;
DisplayMetrics d =context.getResources().getDisplayMetrics(); // 获取屏幕宽、高用
lp.width = (int) (d.widthPixels * 0.8); // 宽度设置为屏幕的0.8
dialogWindow.setAttributes(lp);
//init
mContent = (TextView)findViewById(R.id.content_tip);
mContent.setText(Html.fromHtml(context.getString(R.string.voice_tip_content)));
mBtnShow = (Button) findViewById(R.id.btn_donotshow_tip);
mBtnTry = (Button) findViewById(R.id.btn_try_tip);
}
private VoiceTipDialogClickListener mOnClickListener;
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_donotshow_tip:
mOnClickListener.showAagin(false);
break;
case R.id.btn_try_tip:
mOnClickListener.dismiss();
break;
}
}
public interface VoiceTipDialogClickListener {
void showAagin(boolean visiable);
void dismiss();
}
public void setListener(VoiceTipDialogClickListener listener) {
mOnClickListener = listener;
}
}
style样式:
<style name="MyDialog" parent="@android:style/Theme.Dialog">
<!-- 这里设置背景为透明,为了隐藏边框 -->
<item name="android:windowFrame">@null</item><!--边框-->
<item name="android:windowBackground">@android:color/transparent</item><!--背景透明-->
<item name="android:windowNoTitle">true</item>
<!-- 这里是修改顶部标题背景颜色,具体颜色自己定,可以是图片 -->
<item name="android:topDark">@android:color/transparent</item>
<!-- 这里是修改内容区域背景颜色 -->
<item name="android:windowIsTranslucent">true</item><!--半透明-->
<item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
<!-- <item name="android:windowIsFloating">true</item>--><!--是否浮现在activity之上-->
<!---->
<item name="android:backgroundDimEnabled">false</item><!--模糊-->
</style>
还没有评论,来说两句吧...