自定义Dialog,背景,大小,位置。

本文介绍如何通过修改LayoutParams来自定义Android对话框的大小和位置,并展示了如何使用自定义样式来改变对话框背景的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值