AlertDialog和自定义对话框
***AlertDialog
*常用方法:
setTitle():設(shè)置對話框的標(biāo)題
setIcon():設(shè)置對話框圖標(biāo)
setMessage():設(shè)置對話框要傳達(dá)的具體信息
setCancelable:點(diǎn)擊對話框以外的區(qū)域是否讓對話框消失
setNegativeButton(),setPositiveButton(),setNeutralButton():用來設(shè)置對話框中的按鈕選項(xiàng)
案例效果:點(diǎn)擊button按鈕,可顯示出Dialog對話框,再點(diǎn)擊確定即可退出app,點(diǎn)擊取消則什么都不做;或通過點(diǎn)擊返回鍵也可顯示出對話框
public class MainActivity extends Activity {private AlertDialog.Builder builder;private AlertDialog mydialog;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initDialog();}private void initDialog() {builder = new AlertDialog.Builder(this);//因?yàn)锳lertDialog中的構(gòu)造方法都是protect形式的,所以不能直接new創(chuàng)建對象,但可以調(diào)用它的內(nèi)部類Builder創(chuàng)建//因?yàn)閮?nèi)部類Builder中方法的返回值仍然是Builder類型的所以可以采用鏈?zhǔn)秸{(diào)用多個(gè)方法builder.setTitle("警告").setIcon(R.drawable.ic_launcher).setCancelable(true).setMessage("確定退出?").setNegativeButton("取消",null).setPositiveButton("確定", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {finish(); }});mydialog = builder.create();}//設(shè)置button按鈕的點(diǎn)擊事件public void onClick(View v) {if(!mydialog.isShowing()){mydialog.show();}}//設(shè)置某按鍵被點(diǎn)擊時(shí)的方法@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if((keyCode == KeyEvent.KEYCODE_BACK)&&(!mydialog.isShowing())){//這里設(shè)置返回鍵被點(diǎn)擊時(shí)的操作mydialog.show();return true;}return super.onKeyDown(keyCode, event);} }***自定義Dailog
主要使用setCustomTitle()方法和setView方法
有一點(diǎn)要注意的是主體內(nèi)容只能有一種,比如:設(shè)置了SetMessage不能再設(shè)置SetAdapter或SetView。
自定義標(biāo)題布局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="自定義對話框"/>具體內(nèi)容布局:content_layout.xml:
<EditTextandroid:id="@+id/tv2"android:layout_width="match_parent"android:layout_height="wrap_content"android:hint="請輸入用戶名"android:background="@drawable/content_shape"android:textSize="20sp"/> <EditTextandroid: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"/>其中的背景邊框也是自己設(shè)計(jì)的,通過在res文件夾下創(chuàng)建一個(gè)名為drawable的folder文件,然后在其中添加一個(gè)content.shape.xml文件,注意添加時(shí)需要選中shape選項(xiàng)
MainActivity.java中:
public class MainActivity extends Activity {@Overrideprotected 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();} }轉(zhuǎn)載于:https://www.cnblogs.com/SanguineBoy/p/9805265.html
總結(jié)
以上是生活随笔為你收集整理的AlertDialog和自定义对话框的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【NOIP模拟】T1 发电机(递推逆元+
- 下一篇: [Swift]LeetCode496.