android alertDialog如何改变其样式,就是可以修改其背景,让背景为其他的颜色或背景图

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android alertDialog如何改变其样式,就是可以修改其背景,让背景为其他的颜色或背景图相关的知识,希望对你有一定的参考价值。

如系统自带的alertdialog显示如下图:
如何把背景色修改为其他的颜色或设置成背景图,并去掉四周的白色边框
坐等答案

可以自定义,你需要自定义一个布局文件。设置好你要显示的样式,在代码中,创建一个Dialog,然后使用LayoutInflate把布局引进来就可以。例子:

package cn.ceo.layoutinflater.activity;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

Button button = (Button) findViewById(R.id.button);
button.setOnClickListener(this);


@Override
public void onClick(View v)
showDialog();


private void showDialog()
AlertDialog.Builder builder;
AlertDialog alertDialog;
//Context mContext = MainActivity.this;

/*
* // 下面俩种方法都可以 // //LayoutInflater inflater = getLayoutInflater();
* LayoutInflater inflater = (LayoutInflater) mContext
* .getSystemService(LAYOUT_INFLATER_SERVICE); View layout =
* inflater.inflate(R.layout.dialog, null); TextView text = (TextView)
* layout.findViewById(R.id.text);
* text.setText("Hello, Welcome to Mr Wei's blog!"); ImageView image =
* (ImageView) layout.findViewById(R.id.image);
* image.setImageResource(R.drawable.tap); builder = new
* AlertDialog.Builder(mContext); builder.setView(layout); alertDialog =
* builder.create(); alertDialog.show();
*/
LayoutInflater inflater = (LayoutInflater) MainActivity.this
.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.dialog, null);
TextView textView = (TextView) layout.findViewById(R.id.text);
textView.setText("出错了!");
ImageView imageView = (ImageView) layout.findViewById(R.id.image);
imageView.setImageResource(R.drawable.tap);
builder = new AlertDialog.Builder(MainActivity.this);// 创建一个弹出对话框构造器
builder.setView(layout);
alertDialog = builder.create();// 通过构造器产生一个对话框
alertDialog.show();


-----------
另外,如果你对话框没有出来,那可能是你传入的Context不对。dialog一般在哪个activity上就传对应的context.特殊情况要特殊处理
参考技术A 这个你要去仔细去看SDK里面alertDialog类的方法,以下是一个思路,主要代码如下:
dlg = new AlertDialog.Builder(context).create();
dlg.show();
dlg.getWindow().setContentView(R.layout.alert_style);
LayoutInflater factory = LayoutInflater.from(context);
View view = factory.inflate(R.layout.alert_style, null);
gv = (GridView) view.findViewById(R.id.myGrid);
gv.setAdapter(new ImageAdapter(context, new Integer[] R.drawable.menu_mark_editor,R.drawable.menu_delete));
dlg.getWindow().setContentView(gv);
其实原理很简单,就是在弹出框AlertDialog上给他加一个自己的View 我这里使用的是GridView显示的一排图片,效果和UC的差不多!!你也可以使用ListView代替GridView,原理都是一样!追问

上面的我也能百度出来,实现不了的,来点实用的。

追答

刚才我试了试,我用
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setView(test2);
AlertDialog al = builder.create();
al.show();
可以实现背景更换设置title等,关键是setView,留邮箱发源码给你,不能复制东西出来,说起麻烦的很

追问

489424364@qq.com

本回答被提问者采纳

如何获取一个AlertDialog中的EditText中输入的内容

怎么获取一个AlertDialog中的EditText中输入的内容?

new AlertDialog.Builder(this)   
.setTitle("请输入")   
.setIcon(android.R.drawable.ic_dialog_info)   
.setView(new EditText(this))   
.setPositiveButton("确定", null)   
.setNegativeButton("取消", null)   
.show();

就这段代码中我要获取EditText中用户输入的信息该怎么做?
------解决方案--------------------
楼主这个方法实现AlertDialog是够简单的,但要获取EditText最简单的方法就是获取当前视图里面的所有子视图,再判断视图是否为EditText类型。不过想想就太复杂,存在很多不确定因素。而且获取EditText的值也只能在AlertDialog还存在的时候,可看你写的代码里面,确定按扭和取消按扭都没有OnClickListener,不知这样的AlertDialog除了能看外,还能做什么?

建议换方法实现AlertDialog,至少要声明对象名称。 
------解决方案--------------------
Java code
EditText editText = new EditText(this);
new AlertDialog.Builder(this)  
.setTitle("请输入")  
.setIcon(android.R.drawable.ic_dialog_info)  
.setView(editText )  
.setPositiveButton("确定", null)  
.setNegativeButton("取消", null)  
.show();

------解决方案--------------------
对确定按钮监听,再有就是赋值给Activity的成员变量不就行了
------解决方案--------------------
EditText texta = new EditText(this);
new AlerDialog.Builder(this).setIcon(XXX).XXX…….setView( texta );
String Thing = texta.getText();

以上是关于android alertDialog如何改变其样式,就是可以修改其背景,让背景为其他的颜色或背景图的主要内容,如果未能解决你的问题,请参考以下文章

AlertDialog自己定义View的使用方法+怎样改变弹出框的大小

Android:如何设置AlertDialog的宽度和高度,以及AlertDialog风格的按钮?

Android AlertDialog 在每个请求上动态更改文本

如何在 Android 中设置 AlertDialog 的大小? [复制]

Android:如何在 PIP 模式下显示 AlertDialog?

如何在android中关闭AlertDialog