• AlertDialog和自定义对话框


    ***AlertDialog

    *常用方法:
    setTitle():设置对话框的标题
    setIcon():设置对话框图标
    setMessage():设置对话框要传达的具体信息
    setCancelable:点击对话框以外的区域是否让对话框消失
    setNegativeButton(),setPositiveButton(),setNeutralButton():用来设置对话框中的按钮选项

    案例效果:点击button按钮,可显示出Dialog对话框,再点击确定即可退出app,点击取消则什么都不做;或通过点击返回键也可显示出对话框

    public class MainActivity extends Activity {
    	private AlertDialog.Builder builder;
    	private AlertDialog mydialog;
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		initDialog();
    	}
    
    	private void initDialog() {
    		builder = new AlertDialog.Builder(this);//因为AlertDialog中的构造方法都是protect形式的,所以不能直接new创建对象,但可以调用它的内部类Builder创建
    		//因为内部类Builder中方法的返回值仍然是Builder类型的所以可以采用链式调用多个方法
    		builder.setTitle("警告").setIcon(R.drawable.ic_launcher).setCancelable(true).setMessage("确定退出?")
    		.setNegativeButton("取消",null)
    		.setPositiveButton("确定", new DialogInterface.OnClickListener() {
    			
    			@Override
    			public void onClick(DialogInterface dialog, int which) {
    				finish();		
    			}
    		});
    		mydialog = builder.create();
    	}
    	//设置button按钮的点击事件
    	public void onClick(View v) {
    		if(!mydialog.isShowing()){
    			mydialog.show();
    		}
    	}
    	//设置某按键被点击时的方法
    	@Override
    	public boolean onKeyDown(int keyCode, KeyEvent event) {
    		if((keyCode == KeyEvent.KEYCODE_BACK)&&(!mydialog.isShowing())){//这里设置返回键被点击时的操作
    			mydialog.show();
    			return true;
    		}
    		return super.onKeyDown(keyCode, event);
    	}
    }
    

    ***自定义Dailog

    主要使用setCustomTitle()方法和setView方法
    有一点要注意的是主体内容只能有一种,比如:设置了SetMessage不能再设置SetAdapter或SetView。

    自定义标题布局title_layout.xml:

     <ImageView 
        android:id="@+id/iv"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:src="@drawable/ic_launcher"/>
    
    <TextView 
        android:id="@+id/tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:textSize="24sp"
        android:padding="10dp"
        android:text="自定义对话框"/>
    

    具体内容布局:content_layout.xml:

    <EditText
        android:id="@+id/tv2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入用户名"
        android:background="@drawable/content_shape"
        android:textSize="20sp"
        />
    <EditText
        android:id="@+id/tv3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="请输入密码"
        android:background="@drawable/content_shape"
        android:layout_marginTop="10dp"
        android:inputType="textPassword"
        android:textSize="20sp"/>
    

    其中的背景边框也是自己设计的,通过在res文件夹下创建一个名为drawable的folder文件,然后在其中添加一个content.shape.xml文件,注意添加时需要选中shape选项

    	<!--圆角 -->
    	<corners android:radius="10dp"/>
    	<!--描边  -->
    	<stroke 
    		android:width="1dp"
    		android:color="#ff3366"/>
    </shape>
    

    MainActivity.java中:

    public class MainActivity extends Activity {
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    	}
    
    	public void showDialog(View view){
    		AlertDialog.Builder builder = new AlertDialog.Builder(this);
    		View customTitleView = getLayoutInflater().inflate(R.layout.title_layout, null);
    		builder.setCustomTitle(customTitleView);
    		
    		View contentView = getLayoutInflater().inflate(R.layout.content_layout, null);
    		builder.setView(contentView);
    		builder.setCancelable(true);
    		builder.setPositiveButton("确定", null).setNegativeButton("取消", null);
    		builder.create().show();
    	}
    }
    

  • 相关阅读:
    *** mixed implicit and normal rules: deprecated syntax
    cold boot and warm boot.
    git打补丁命令
    LSB和MSB
    __attribute__((weak)) ------ 关于弱符号的用法
    键盘和鼠标无法热插拔问题
    yocto编译加速及单独编译内核与uboot
    V4L2学习教程
    linux错误码
    linux内核面试常见试题
  • 原文地址:https://www.cnblogs.com/SanguineBoy/p/9805265.html
Copyright © 2020-2023  润新知