android alterdialog的使用归纳整理

本文介绍如何在Android应用中创建自定义的AlertDialog,包括设置标题、消息、按钮等元素,并展示了如何通过XML布局文件实现美观的对话框样式。此外,还提供了从底部弹出对话框的方法及其动画设置。

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

最简单的退出程序时候的dialog对话框

  项目中遇到的,titlemessage都没法设置,只能addview来设置message的信息了。

AlertDialog.Builder builder = new AlertDialog.Builder(this);

AlertDialog               dialog;
TextView textView = new TextView(this);
textView.setText("退出?");
textView.setTextSize(getResources().getDimension(R.dimen.five));
textView.setTextColor(getResources().getColor(R.color.dark_green));
textView.setPadding(50,90,0,0);
builder.setView(textView);
builder.setPositiveButton("确定", new DialogInterface.OnClickListener()
{
    @Override
    public void onClick(DialogInterface dialog, int which)
    {
        closeTimer();
        finish();
//使dialog消失
//                if (dialog != null)
//                {
//                    dialog.dismiss();
//                }
    }
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener()
{
    @Override
    public void onClick(DialogInterface dialog, int which)
    {
        dialog.dismiss();
    }
});
dialog = builder.show();

 

常规的应该是

builder.setTitle("title");
builder.setMessage("message");
 
改变alterdialog默认背景
Style里面设置
<!--alertdialog背景设置-->
<style name="AlertDialog" parent="@android:style/Theme.Holo.Light.Dialog">
    <!-- 这里设置背景为透明,为了隐藏边框 -->
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowNoTitle">true</item>
    <!-- 这里是修改顶部标题背景颜色,具体颜色自己定,可以是图片 -->
    <!--<item name="android:topDark">@color/white</item>-->
    <!-- 这里是修改内容区域背景颜色 -->
    <item name="android:centerDark">#ffffff</item>
    <item name="android:windowIsTranslucent">true</item>
    <!--<item name="android:windowAnimationStyle">@+android:style/Animation.Translucent</item>-->
</style>
代码中设置:
AlertDialog.Builder builder  = new AlertDialog.Builder(this,R.style.AlertDialog);
 

Alterdialog点击空白处不消失的方法

dialog.setCanceledOnTouchOutside(false);// 设置点击屏幕Dialog不消失

 

 

 

二.从底部跳出dialog选择

 

1.设置dialog跳出动画

 

Actionsheet_dialog_in.xml

 

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="200"
    android:fromYDelta="100%"
    android:toYDelta="0" />

 

2.设置dialog淡出动画

Actionsheet_dialog.out.xml

 

<?xml version="1.0" encoding="utf-8"?>
<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="200"
    android:fromYDelta="0"
    android:toYDelta="100%" />

 

3.style的样式设置

<style name="ActionSheetDialogStyle" parent="@android:style/Theme.Dialog">
    <!--背景透明-->
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowContentOverlay">@null</item>
    <!--浮于activity之上-->
    <item name="android:windowIsFloating">true</item>
    <!--边框-->
    <item name="android:windowFrame">@null</item>
    <!--Dialog以外的区域模糊效果-->
    <item name="android:backgroundDimEnabled">true</item>
    <!--无标题-->
    <item name="android:windowNoTitle">true</item>
    <!--半透明-->
    <item name="android:windowIsTranslucent">true</item>
    <!--Dialog进入及退出动画-->
    <item name="android:windowAnimationStyle">@style/ActionSheetDialogAnimation</item>
</style>

<!-- ActionSheet进出动画 -->
<style name="ActionSheetDialogAnimation" parent="@android:style/Animation.Dialog">
    <item name="android:windowEnterAnimation">@anim/actionsheet_dialog_in</item>
    <item name="android:windowExitAnimation">@anim/actionsheet_dialog_out</item>
</style>

 

4.页面xml文件

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

    <TextView
        android:id="@+id/album"
        android:layout_width="300dp"
        android:layout_height="45dp"
        android:gravity="center"
        android:background="#EEEEE0"
        android:layout_margin="2dp"
        android:text="从相册选择"
        android:textColor="#4A4A4A"/>

    <TextView
        android:id="@+id/camera"
        android:layout_width="match_parent"
        android:layout_height="45dp"
        android:gravity="center"
        android:background="#EEEEE0"
        android:layout_margin="2dp"
        android:text="照相"
        android:textColor="#4A4A4A"/>

    <TextView
        android:id="@+id/cancel"
        android:layout_width="match_parent"
        android:layout_height="45dp"
        android:gravity="center"
        android:background="#EEEEE0"
        android:layout_margin="2dp"
        android:text="取消"
        android:textColor="#4A4A4A"/>

</LinearLayout>

 

5.activity里面的调用

package cn.com.cybertech.notefunctiondemo;

import android.app.Dialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity implements View.OnClickListener
{
    private Button btn_picture,btn_voice,btn_video;
    public  Dialog   dialog;
    private View     inflate;
    private TextView dialog_album,dialog_camera,dialog_cancel;

    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        init();
    }

    void init()
    {
        btn_picture = (Button) findViewById(R.id.picture);
        btn_voice = (Button) findViewById(R.id.voice);
        btn_video = (Button) findViewById(R.id.video);
        btn_picture.setOnClickListener(this);
        btn_voice.setOnClickListener(this);
        btn_video.setOnClickListener(this);
    }

    void showSelectPictureDialog()
    {
        dialog = new Dialog(this,R.style.ActionSheetDialogStyle);
        //填充对话框的布局
        inflate = LayoutInflater.from(this).inflate(R.layout.dialog_select_picture,null);
        //初始化控件
        dialog_album = (TextView) inflate.findViewById(R.id.album);
        dialog_camera = (TextView) inflate.findViewById(R.id.camera);
        dialog_cancel = (TextView) inflate.findViewById(R.id.cancel);
        dialog_album.setOnClickListener(this);
        dialog_camera.setOnClickListener(this);
        dialog_cancel.setOnClickListener(this);
        //将布局设置给dialog
        dialog.setContentView(inflate);
        //获取当前activity所在窗体
        Window dialogWindow = dialog.getWindow();
        //设置Dialog从窗体底部弹出
        dialogWindow.setGravity(Gravity.BOTTOM);
        //获取窗体的属性
        WindowManager.LayoutParams lp = dialogWindow.getAttributes();
        lp.y = 20;//设置Dialog距离底部的距离
        //将属性设置给窗体
        dialogWindow.setAttributes(lp);
        dialog.show();//显示对话框
    }

    @Override
    public void onClick(View v)
    {
        switch (v.getId())
        {
            case R.id.picture:
                showSelectPictureDialog();
                break;
            case R.id.voice:
                break;
            case R.id.video:
                break;
            case R.id.album:
                Toast.makeText(this,"点击了相册选项",Toast.LENGTH_SHORT).show();
                break;
            case R.id.camera:
                Toast.makeText(this,"点击了照相机选项",Toast.LENGTH_SHORT).show();
                break;
            case R.id.cancel:
                dialog.dismiss();
                break;
            default:
                break;
        }
    }
}

 

 

最简单原始效果的dialog(挺好看的)

布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
   
android:layout_width="200dp"
   
android:layout_height="wrap_content"
   
android:background="#ffffff"
   
android:orientation="vertical">

    <RelativeLayout
       
android:id="@+id/dialog_camera"
        
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:background="@drawable/rly_click_bg">

        <TextView
           
android:layout_width="match_parent"
           
android:layout_height="wrap_content"
            
android:paddingBottom="13dp"
           
android:paddingLeft="25dp"
           
android:paddingTop="13dp"
           
android:text="拍照"
           
android:textColor="#000000"
           
android:textSize="15sp" />
    </RelativeLayout>

    <View
       
android:layout_width="match_parent"
       
android:layout_height="1px"
       
android:background="#d3d3d3" />

    <RelativeLayout
       
android:id="@+id/dialog_album"
       
android:layout_width="wrap_content"
       
android:layout_height="wrap_content"
       
android:background="@drawable/rly_click_bg">

        <TextView
           
android:layout_width="match_parent"
           
android:layout_height="wrap_content"
           
android:paddingBottom="13dp"
           
android:paddingLeft="25dp"
           
android:paddingTop="13dp"
           
android:text="从相册选择"
           
android:textColor="#000000"
           
android:textSize="15sp" />
    </RelativeLayout>

</LinearLayout>

 

 

 

/**
 *
跳出弹窗,是拍照还是相册
 */
private RelativeLayout tvCamera, tvAlbum;
private
Dialog dialog;
private
View inflate;

private void
showDialog() {
   
dialog = new Dialog(BlogActivity.this);
   
inflate = LayoutInflater.from(this).inflate(R.layout.dialog_bolg, null);
   
tvCamera = inflate.findViewById(R.id.dialog_camera);
   
tvAlbum = inflate.findViewById(R.id.dialog_album);
   
tvCamera.setOnClickListener(this);
   
tvAlbum.setOnClickListener(this);
   
dialog.setContentView(inflate);
   
dialog.show();
}

@Override
public void onClick(View v) {
   
switch (v.getId()) {
       
case R.id.dialog_camera:
           
if (dialog!=null)
            {
               
dialog.dismiss();
           
}
           
break;
        case
R.id.dialog_album:
           
if (dialog!=null)
            {
                
dialog.dismiss();
               
Intent i = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
               
startActivityForResult(i, 0x3001);
           
}
           
break;
        default
:
           
break;
   
}
}

 

6.点击空白处不消失的方法

 

在dialog.show()之前调dialog.setCanceledOnTouchOutside(false)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值