使用AlertDialog.Builder自定义对话框

转载 2013年12月04日 19:15:39

android自定义对话框

说到对话框你肯定会想到AlertDialog.Builder。当然这次不是用AlertDialog.Builder来实现的!而是Dialog类

AlertDialog.Builder提供的方法有:
setTitle():给对话框设置title.
setIcon():给对话框设置图标。
setMessage():设置对话框的提示信息
setItems():设置对话框要显示的一个list,一般用于要显示几个命令时
setSingleChoiceItems():设置对话框显示一个单选的List
setMultiChoiceItems():用来设置对话框显示一系列的复选框。
setPositiveButton():给对话框添加”Yes”按钮。
setNegativeButton():给对话框添加”No”按钮。
那么在Dialog类怎样实现的呢?当然是layout啦,你可以自定义一个xml来布置你对话框
看看例子和源码吧
package com.hl;

import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
public class MyDialog extends Activity implements android.view.View.OnClickListener {
 Button btn1=null;
    Button btn2=null;
    Button btn3=null;
 @Override
  public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);
         btn1=(Button)findViewById(R.id.b1);
         btn2=(Button)findViewById(R.id.b2);
         btn3=(Button)findViewById(R.id.b3);
         btn1.setOnClickListener(this);
         btn2.setOnClickListener(this);
         btn3.setOnClickListener(this);
     }
 @Override
 public void onClick(View v) {
  switch(v.getId()){
        case R.id.b1:
            break;
        case R.id.b2:
        case R.id.b3:
            new MyDialogs(this).setDisplay();
            break;
        default:
  
 }
}
class MyDialogs extends Dialog implements android.view.View.OnClickListener{
 private Button b1;
    private Window window=null;
   
    public MyDialogs(Context context){
        super(context);
    }
    public void setDisplay(){
     setContentView(R.layout.dialog);//设置对话框的布局
     b1=(Button)findViewById(R.id.clo);
     b1.setOnClickListener(this);
     setProperty();
        setTitle("自定义对话框");//设定对话框的标题
        show();//显示对话框  
    }
     //要显示这个对话框,只要创建该类对象.然后调用该函数即可.
    public void setProperty(){
         window=getWindow();//   得到对话框的窗口.
         WindowManager.LayoutParams wl = window.getAttributes();
         wl.x =0;//这两句设置了对话框的位置.0为中间
         wl.y =180;
         wl.alpha=0.6f;//这句设置了对话框的透明度
         wl.gravity=Gravity.BOTTOM;        
         window.setAttributes(wl);
    }
  @Override
  public void onClick(View v) {
   dismiss();//取消   
  }
  }
}


对话框透明

1、定义style:

<resources>

    <style
        name="dialog_fullscreen">
        <item
            name="android:windowFullscreen">true</item>
        <item
            name="android:windowNoTitle">true</item>
        <item
            name="android:windowBackground">@android:color/transparent</item>
    </style>
</resources>

2、定义layout文件:test_dialog.xml

<LinearLayout
    android:id="@+id/ll_dialog"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_gravity="center"
    android:background="#000000">

……

</LinearLayout>

3、代码中设置:

public class TestDialog extends Dialog

{

    public TestDialog(Context context)
    {
        super(context, R.style.dialog_fullscreen);
        // TODO Auto-generated constructor stub
    }

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.test_dialog);

        // 设置背景透明度
        View ll = findViewById(R.id.ll_dialog);
        ll.getBackground().setAlpha(120);// 120为透明的比率
    }

}


获取layout作为view

方法一:取得LayoutInflater 
layoutInflater = getLayoutInflater(); 
          
方法二: 
layoutInflater = LayoutInflater.from(this); 
          
方法三: 
layoutInflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);


做项目过程中遇到一个问题,从数据库里读取图片名称,然后调用图片。直接用R.drawable.?无法调用。查了好多地方最后找到了个方法,分享给大家,希望有帮助。
主要由两种方法,个人建议第二种。
1. 不把图片放在res/drawable下,而是存放在src某个package中(如:com.drawable.resource),这种情况下的调用方法为:
String path = "com/drawable/resource/imageName.png";
InputStream is = getClassLoader().getResourceAsStream(path);
Drawable.createFromStream(is, "src");

2. 如果还是希望直接使用res/drawable中的图片,就需要通过下面的方法了:
假设创建工程的时候,填写的package名字为:com.test.image
int resID = getResources().getIdentifier("imageName", "drawable", "com.test.image");
Drawable image = getResources().getDrawable(resID);



http://blog.csdn.net/iefreer/article/details/4581137

相关文章推荐

AlertDialog使用和自定义

AlertDialog的使用和自定义

Android详细的对话框AlertDialog.Builder使用方法 对话框风格的activity

我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等...

Builder模式设置AlertDialog字体大小、颜色等属性

AlertDialog设置字体颜色、大小。输入框、选择框

Android修改AlertDialog宽和高以及设置AlertDialog的背景

不知道你们试过了吗,AlertDialog在我们给他设置我们自己的布局的时候他的宽度不论我们怎么设置他都是不变的,要想改变宽和高我们可以动态的去修改他的宽度好高度 直接上代码 // 1. 布局文件...

Android 三个按钮对话框

1、activity_main.xml

Android中AlertDialog, AltertDialog.Builder的基本用法与Builder模式

1. AlterDialogAndroid中到处都是Dialog用来向用户展示信息和询问用户的选择。要使用Android的对话框非常简单,只需要使用AlterDialog这个类即可创建一个Androi...

AlertDialog三种对话框的实现

参考:http://blog.csdn.net/woaieillen/article/details/7378324AlertDialog 概述对话框在程序中不是必备的,但是用好对话框能对我们编写的应...

Android的AlertDialog详解(7种方式)

需要注意的两点: 1. 在setIcon时,需要使用setTitle方法,否则icon不会显示 2.如果同时调用setMessage 和 setItems(或者setSingleChoic...

android Dialog 各种Dialog 三个选项的、进度条的、单选的、多选的、自定义的对话框

文字就不说了,直接上代码。 1.三个选项Dialog. 效果图如下:     /** * 三个选项的Dialog */ private void th...
  • wanzdhan
  • wanzdhan
  • 2011年11月29日 20:59
  • 12898

Android中AlterDialog四种实现样式

(1)用于提示信息  如:是否退出系统?是 OR  否     第一步:实例化AlertDialog.Builder对象     AlertDialog.Builder    builder=n...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用AlertDialog.Builder自定义对话框
举报原因:
原因补充:

(最多只允许输入30个字)