android alertDialog如何改变其样式,就是可以修改其背景,让背景为其他的颜色或背景图
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android alertDialog如何改变其样式,就是可以修改其背景,让背景为其他的颜色或背景图相关的知识,希望对你有一定的参考价值。
如系统自带的alertdialog显示如下图:
如何把背景色修改为其他的颜色或设置成背景图,并去掉四周的白色边框
坐等答案
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中用户输入的信息该怎么做?
.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,至少要声明对象名称。
------解决方案--------------------
楼主这个方法实现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 的大小? [复制]