android开发步步为营之95:自定义dialog去掉白色边框

        今天在使用自定义的Dialog的时候,发现会出现默认的边框,很难看,后来查资料是需要自己设置一个样式的,下面给出这个demo。

        第一步:设计对话框样式

   <style
        name="no_border_dialog"
        parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item><!-- 边框 -->
        <item name="android:windowIsFloating">true</item><!-- 是否浮现在activity之上 -->
        <item name="android:windowIsTranslucent">false</item><!-- 半透明 -->
        <item name="android:windowNoTitle">true</item>  <!-- 无标题 -->
        <item name="android:windowBackground">@android:color/transparent</item><!-- 背景图片 -->
        <item name="android:backgroundDimEnabled">false</item><!--背景是否需要模糊-->
    </style>

          第二步:设计对话框页面

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:background="@drawable/round_corner_regtangle_5"
    android:minWidth="280dip"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="18dp"
        android:gravity="center"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/app_name"
            android:textColor="#A8000000"
            android:textSize="24sp"
            android:textAllCaps="false"
            android:textStyle="bold" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/content"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="27dp"
        android:gravity="center"
        android:orientation="vertical" >
        <EditText
            android:id="@+id/message"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"
            android:layout_marginRight="15dp"
            android:hint="input name"
            android:textAllCaps="false"
            android:textColor="#A8000000"
            android:textSize="18sp" />
    </LinearLayout>

    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:layout_marginTop="34dp"
        android:background="#EBEBEB" />

    <LinearLayout
        android:id="@+id/buttonLayout"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/negativeButton"
            android:layout_width="0dip"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:background="@drawable/btn_alert_dlg_left"
            android:padding="15dp"
            android:singleLine="true"
            android:textAllCaps="false"
            android:text="@string/app_name"
            android:textColor="#ffc8c8c8"
            android:textSize="18sp" />

        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="horizontal" >

            <View
                android:layout_width="1dp"
                android:layout_height="match_parent"
                android:background="#EBEBEB" />

            <Button
                android:id="@+id/positiveButton"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@drawable/btn_alert_dlg_right"
                android:ellipsize="marquee"
                android:focusable="true"
                android:focusableInTouchMode="true"
                android:marqueeRepeatLimit="marquee_forever"
                android:padding="15dp"
                android:singleLine="true"
                android:text="@string/app_name"
                android:textAlignment="center"
                android:textAllCaps="false"
                android:textColor="#ff02b389"
                android:textSize="18sp" />
        </LinearLayout>
    </LinearLayout>

</LinearLayout>
          第三步:自定义Dialog
package com.figo.study.view;

import android.app.Dialog;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

import com.figo.study.R;

/**
 * Created by figo on 16/3/4.
 */
public class CustomDialog extends Dialog {
    private EditText mEtMessage;
    private Button mPositiveButton, mNegativeButton;
    private TextView mTvTitle;

    public CustomDialog(Context context) {
        super(context, R.style.no_border_dialog);//设置样式

        setCustomDialog();
    }

    private void setCustomDialog() {
        View mView = LayoutInflater.from(getContext()).inflate(R.layout.layout_custom_dialog, null);
        mTvTitle = (TextView) mView.findViewById(R.id.title);
        mEtMessage = (EditText) mView.findViewById(R.id.message);
        mPositiveButton = (Button) mView.findViewById(R.id.positiveButton);
        mNegativeButton = (Button) mView.findViewById(R.id.negativeButton);
        super.setContentView(mView);
    }

    public View getmEtMessage() {
        return mEtMessage;
    }

    public String getMessage() {
        return mEtMessage.getText().toString();
    }

    public void setTitle(int resId) {
        mTvTitle.setText(resId);
    }

    @Override
    public void setContentView(int layoutResID) {
    }

    @Override
    public void setContentView(View view, ViewGroup.LayoutParams params) {
    }

    @Override
    public void setContentView(View view) {
    }

    /**
     * 确定键监听器
     *
     * @param listener
     */
    public void setOnPositiveListener(View.OnClickListener listener) {
        mPositiveButton.setOnClickListener(listener);
    }

    public void setOnPositiveListener(int resId, View.OnClickListener listener) {
        mPositiveButton.setOnClickListener(listener);
        mPositiveButton.setText(resId);
    }

    /**
     * 取消键监听器
     *
     * @param listener
     */
    public void setOnNegativeListener(View.OnClickListener listener) {
        mNegativeButton.setOnClickListener(listener);
    }

    public void setOnNegativeListener(int resId, View.OnClickListener listener) {
        mNegativeButton.setOnClickListener(listener);
        mNegativeButton.setText(resId);
    }
}

      第四步:调用

 private void showNameDialog() {
        final CustomDialog dialog = new CustomDialog(ImgFontAdjustActivity.this);
        dialog.setCanceledOnTouchOutside(false);
        dialog.setTitle(R.string.lbl_new_skin);
        dialog.setOnPositiveListener(R.string.lbl_confirm, new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int textShadow = 0;
                if (mCbHatch.isChecked()) {
                    textShadow = 1;
                } else {
                    textShadow = 0;
                }
                mCurrentSkinPackage = changeHandMakeSkinPackage(mCurrentSkinPackage, dialog.getMessage(), mCurrentSkinPackage.keyboardKeyTextColor, textShadow);

                saveSkinPackageHandMake(mCurrentSkinPackage);
                dialog.dismiss();

                finish();
            }
        });
        dialog.setOnNegativeListener(R.string.lbl_cancel, new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });
        dialog.show();
    }


  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值