2016-07-16 18:20:57 guoqingshuang 阅读数 475
String[] single_list={"男","女"};

private void show1(){
    	AlertDialog.Builder builder=new AlertDialog.Builder(this);
    	builder.setTitle("选择性别!");
    	builder.setIcon(R.drawable.ic_launcher);
    	builder.setSingleChoiceItems(single_list,0,new DialogInterface.OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				String str=single_list[which];
				Toast.makeText(MainActivity.this,"这个人是"+str,Toast.LENGTH_LONG).show();
			}
		});
    	AlertDialog dialog=builder.create();
    	dialog.show();
    }


2019-12-19 10:48:31 eq0218 阅读数 694

###开发项目的时候经常会使用的Dialog,所以给大家分享一个类似IOS风格的Dialog。

####源码下载链接:源码下载

实现效果

实现机制
1.先自定义一个弹出框的样式
2.自己实现MyDialog类,在里面加载自定义样式的弹出框;
3.使用时,与使用Dialog一样
具体代码

####MainActivity.java :

public class MainActivity extends AppCompatActivity {
    private MyDialog myDialog;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView btn = (TextView) findViewById(R.id.click);
        myDialog = new MyDialog(this);
        myDialog.setTitle("注意");//设置标题
        myDialog.setMessage("确认删除吗?");//设置内容

        //调起Dialog
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myDialog.dialog.show();//显示
            }
        });

        //确认按键回调,按下确认后在此做处理
        myDialog.setMyDialogOnClick(new MyDialog.MyDialogOnClick() {
            @Override
            public void ok() {
                Toast.makeText(MainActivity.this, "回调成功了", Toast.LENGTH_LONG).show();
                myDialog.dialog.dismiss();//关闭
            }
        });
    }
}

####MyDialog.java :自定义Dialog的实现类MyDialog

public class MyDialog implements View.OnClickListener {
    private Context context;
    public Dialog dialog;
    public TextView title, message, cancle, ok;
    private MyDialogOnClick myDialogOnClick;

    public MyDialog(Context context) {
        this.context = context;
        //下面三步非常重要
        dialog = new Dialog(context, R.style.dialog);//Dialog的Style
        Window window = dialog.getWindow();
        window.setContentView(R.layout.my_dialog);//引用Dialog的布局

        title = (TextView) window.findViewById(R.id.tv_title);
        message = (TextView) window.findViewById(R.id.tv_message);
        cancle = (TextView) window.findViewById(R.id.btn_cancel);
        ok = (TextView) window.findViewById(R.id.btn_ok);

        cancle.setOnClickListener(this);
        ok.setOnClickListener(this);
    }

    public void setTitle(String titleStr) {
        title.setText(titleStr);
    }

    public void setMessage(String messageStr) {
        message.setText(messageStr);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.btn_ok:
               myDialogOnClick.ok();
                break;
            case R.id.btn_cancel:
                dialog.dismiss();
                break;

        }
    }

    //给确认按钮设置回调的接口
    public interface MyDialogOnClick{
         void ok();
    }

    public void setMyDialogOnClick(MyDialogOnClick myDialogOnClick){
        this.myDialogOnClick =myDialogOnClick;
    }

}

####my_dialog.xml 自定义Dialog的布局文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@null">
    <TextView
        android:id="@+id/tv_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_gravity="center_horizontal"
        android:background="@drawable/top_title"
        android:gravity="center_horizontal"
        android:text="警告"
        android:textColor="#000"
        android:textSize="16sp"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/tv_message"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_below="@id/tv_title"
        android:layout_centerHorizontal="true"
        android:gravity="center"
        android:background="#fff"
        android:padding="5dp"
        android:maxLines="2"
        android:text="你正在进行危险操作"
        android:textColor="#9000"
        android:textSize="14sp" />

    <View
        android:id="@+id/line1"
        android:layout_width="match_parent"
        android:layout_height="0.5dp"
        android:background="#ccc"
        android:layout_below="@+id/tv_message"
        />


    <LinearLayout
        android:layout_below="@+id/line1"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:background="@drawable/bottom_title"
        android:orientation="horizontal"
        >
        <TextView
            android:id="@+id/btn_cancel"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:text="取消"
            android:layout_weight="1"
            android:gravity="center"
            android:textColor="#000"
            />
        <View
            android:layout_width="0.5dp"
            android:layout_height="match_parent"
            android:background="#ccc"
            />
        <TextView
            android:id="@+id/btn_ok"
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:text="确定"
            android:layout_weight="1"
            android:textColor="#000"
            android:gravity="center"
            />
    </LinearLayout>
</RelativeLayout>

####引用的样式styles.xml

 <style name="dialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowIsTranslucent">false</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:background">@android:color/transparent</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:backgroundDimEnabled">true</item>
    </style>

####为了实现圆角,必须把style里的两个背景都设置为透明,并且在my_dialog.xml dialog的Top和Bottom中把Background分别设置为top_title.xml和bottom_title.xml

####top_title.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#fff"></solid>
    <corners
        android:bottomLeftRadius="0dp"
        android:bottomRightRadius="0dp"
        android:topLeftRadius="10dp"
        android:topRightRadius="10dp"></corners>
</shape>

####bottom_title.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <solid android:color="#fff"></solid>
    <corners
        android:bottomLeftRadius="10dp"
        android:bottomRightRadius="10dp"
        android:topLeftRadius="0dp"
        android:topRightRadius="0dp"></corners>
</shape>

到这一步页就完成了。实现原理很简单。希望能给不懂的同学带来启发。
这个项目Android Studio环境下开发的。所以使用Eclipse的同学只能复制到eclipse

2017-10-30 13:58:38 github_38163856 阅读数 248
不得不说IOS系统的对话框确实漂亮 那么 我们就也来上一套

这里写图片描述
这里写图片描述

布局文件很简单   就是照着效果图自己贴  考虑到适配的问题  还需要自己做处理

public class DialogIos extends Dialog {

    private Context context;
    private String titleMessage;
    private String contontMessage;

    public DialogIos(Context context, String titleMessage,String contontMessage) {
        super(context,R.style.dialog_custom);
        this.context = context;
        this.titleMessage = titleMessage;
        this.contontMessage = contontMessage;
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Window window = getWindow();
        window.setGravity(Gravity.CENTER);
        setContentView(R.layout.dialog_ios_layout);
        setCanceledOnTouchOutside(false);// 点击Dialog外部消失
        initView();
    }

    private void initView() {
        TextView diolog_title = (TextView) findViewById(R.id.diolog_title);
        diolog_title.setText(titleMessage);
        TextView diolog_contont = (TextView) findViewById(R.id.diolog_contont);
        diolog_contont.setText(contontMessage);
        TextView comfirm_choose = (TextView) findViewById(R.id.comfirm_choose);
        comfirm_choose.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (null != onclickItemListen){
                    onclickItemListen.OnitemClick("1");
                }
            }
        });
        TextView cancle_choose = (TextView) findViewById(R.id.cancle_choose);
        cancle_choose.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (null != onclickItemListen){
                    onclickItemListen.OnitemClick("0");
                }
            }
        });
    }

    public interface OnclickItemListen{
        void OnitemClick(String contont);
    }
    public OnclickItemListen onclickItemListen;
    public void SetOnCLickListen(OnclickItemListen onclickItemListen){
        this.onclickItemListen = onclickItemListen;
    }
}



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:background="@drawable/button_write_back"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="70dp"
            android:gravity="center"
            android:orientation="vertical">

            <TextView
                android:id="@+id/diolog_title"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="5dp"
                android:gravity="center"
                android:text="提示"
                android:textColor="@color/black"
                android:textSize="16dp" />

            <TextView
                android:id="@+id/diolog_contont"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:text="是否删除该地址"
                android:textColor="@color/black"
                android:textSize="14dp" />
        </LinearLayout>

        <View
            android:layout_width="match_parent"
            android:layout_height="1px"
            android:background="@color/line_eee" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="40dp">

            <TextView
                android:id="@+id/cancle_choose"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:text="取消"
                android:textColor="#00f"
                android:textSize="15dp" />

            <View
                android:layout_width="1px"
                android:layout_height="match_parent"
                android:background="@color/line_eee" />

            <TextView
                android:id="@+id/comfirm_choose"
                android:layout_width="0dp"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:text="确定"
                android:textColor="@color/red_color"
                android:textSize="15dp" />
        </LinearLayout>
    </LinearLayout>
</LinearLayout>



    <!-- dialog样式 -->
    <style name="dialog_custom" parent="@android:style/Theme.Dialog">
        <item name="android:windowIsFloating">true</item>    <!--是否浮在界面上-->
        <item name="android:windowIsTranslucent">true</item> <!--是否半透明-->
        <item name="android:windowNoTitle">true</item>       <!--是否有标题-->
        <item name="android:windowBackground">@android:color/transparent</item> <!--窗口背景色透明-->
        <item name="android:backgroundDimEnabled">true</item> <!--背景是否模糊显示-->
    </style>

具体用法

 DialogIos dialogIos = new DialogIos(AddHbuyDynamicsActivity.this,"信息未完善","完善用户名、手机号、邮箱、头像、地区\n生日等才可以发帖哦~");
                                        dialogIos.SetOnCLickListen(new DialogIos.OnclickItemListen() {
                                            @Override
                                            public void OnitemClick(String contont) {
                                                if ("1".equals(contont)){
                                                    startActivity(new Intent(AddHbuyDynamicsActivity.this, HbuyUserDetailActivity.class));
                                                    dialogIos.cancel();
                                                }else {
                                                    dialogIos.cancel();
                                                }
                                            }
                                        });
                                        dialogIos.show();

写的很仓促 稍后会将他做一个完善 网上也有一个仿IOS的 SuperDialog 大家可以去看一下

2011-04-24 14:37:00 jamesliulyc 阅读数 27458

设置单选列表只需 AlertDialog.Builder里面的setSingleChoiceItems 来设置即可

实现步骤如下:

第一步:用来显示列表内容的

res/values/array.xml 

 

第二步:还是定义一个输入框和一个按钮

res/layout/single_choice_dialog_layout.xml

 

第三步:

产生一个单选列表对话框,首先需要new 一个AlertDialog.Builder作为对话框内容的载体,然后通过setSingleChoiceItems将

builder与array.xml中的数据关联,需要通过DialogInterface.OnClickListener对列表单选单击事件进行处理,

为了保存单选列表项中的选中数据,需要单独写一个类,且类中需要加一个选中了哪一个列表项的属性which,

代码如下

src/com/dialog/activity/SingChoiceDialogActivity.java

 

 

效果图:

 

 

 

 

 源码下载地址:http://download.csdn.net/source/3221459

 

 

 

2015-09-11 23:55:33 ko800008ok 阅读数 515

效果图



实现步骤

1.AlertDialog.java

/**
 * 
 * @author zhangwen 2014-12-22
 * 只带有一个确认按钮的dialog
 *
 */
public class AlertDialog extends Dialog implements OnClickListener{
	
	private TextView mTitleTv;
	private Button mOkBtn;
	private TextView mMsgTv;
	
	private OnOkClickListener mOnOkClickListener;//确定按钮监听
	
	public interface OnOkClickListener{
		void onOkClick();
	}
	
	public AlertDialog(Context context, OnOkClickListener onOkClickListener,String title,String btnText){
		
		this(context,onOkClickListener,title,null,btnText);
		
	}
	
	public AlertDialog(Context context, OnOkClickListener onOkClickListener,String title,String msg,String btnText){
		super(context, R.style.dialog);
		
		this.mOnOkClickListener = onOkClickListener;
		setContentView(R.layout.dialog_alert);
		mTitleTv = (TextView) findViewById(R.id.alert_title);
		mTitleTv.setText(title);
		if(msg!=null){
			mMsgTv = (TextView) findViewById(R.id.alert_msg_tv);
			mMsgTv.setText(msg);
			mMsgTv.setVisibility(View.VISIBLE);
		}
		mOkBtn = (Button) findViewById(R.id.alert_btn);
		mOkBtn.setText(btnText);
		mOkBtn.setOnClickListener(this);
	}

	@Override
	public void onClick(View v) {
		if(mOnOkClickListener!=null){
			mOnOkClickListener.onOkClick();
		}
		this.dismiss();
	}
	
}

2.styles.xml

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="dialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowBackground">@drawable/dialog_bg</item>
        <!-- 设置自定义布局的背景透明 -->
        <item name="android:windowNoTitle">true</item>
    </style>
</resources>

3.colors.xml

<resources>
    <color name="dialog_bg">#D0FFFFFF</color>
    <color name="dialog_btn_h">#89b7db</color>
</resources>

4.dimens.xml

<resources>

    <dimen name="dialog_width">260dp</dimen>

</resources>

5.dialog_alert.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="@dimen/dialog_width"
    android:layout_height="match_parent"
    android:background="@drawable/dialog_bg"
    android:orientation="vertical"
    android:padding="0dp" >

    <TextView
        android:id="@+id/alert_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:paddingTop="16dip"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:paddingBottom="12dp"
        android:textStyle="bold"
        android:textColor="#000"
        android:textSize="16sp" />
	<TextView
	    android:id="@+id/alert_msg_tv" 
	    android:layout_width="match_parent"
	    android:layout_height="wrap_content"
	    android:gravity="center"
	    android:textSize="13sp"
	    android:paddingTop="0dp"
	    android:paddingLeft="10dp"
	    android:paddingRight="10dp"
	    android:paddingBottom="10dp"
	     android:textColor="#000"
	     android:visibility="gone"
	    />
    <View
        android:layout_width="match_parent"
        android:layout_height="1px"
        android:background="#c0c0c0" />
    <Button
        android:id="@+id/alert_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/sel_dia_btn_b"
        android:gravity="center"
        android:padding="12dp"
        android:text="Ok"
        android:textColor="#304FFE"
        android:textSize="16dp" />

</LinearLayout>

6 drawable dialog_bg.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
    <solid android:color="@color/dialog_bg" />
    <corners android:radius="8dip" />
</shape>

7. drawable sel_dia_btn_b.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true">
        <shape  android:shape="rectangle">
            <!-- 填充的颜色 -->
            <solid android:color="@color/dialog_btn_h" />
            <!-- 设置按钮的四个角为弧形 -->
            <!-- android:radius 弧形的半径 -->
            <corners android:bottomLeftRadius="5dp" android:bottomRightRadius="5dp" />

            <!-- padding:Button里面的文字与Button边界的间隔 -->
            <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">

            <!-- 填充的颜色 -->
            <solid android:color="@android:color/transparent" />
            <!-- 设置按钮的四个角为弧形 -->
            <!-- android:radius 弧形的半径 -->
            <corners android:bottomLeftRadius="5dp" android:bottomRightRadius="5dp" />

            <!-- padding:Button里面的文字与Button边界的间隔 -->
            <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
        </shape>
    </item>

</selector>

8.使用 MainActivity.java

//只有标题的dialog
		new AlertDialog(this, new OnOkClickListener() {

			@Override
			public void onOkClick() {
				//确定按钮点击
			}
		}, "登陆失败", "确定").show();

//有描述的dialog
		new AlertDialog(this, new OnOkClickListener() {

			@Override
			public void onOkClick() {
				//确定按钮点击
			}
		}, "登陆失败","此用户不存在!请检查后重新登陆", "确定").show();


下载地址:http://download.csdn.net/detail/ko800008ok/9099845

没有更多推荐了,返回首页