Android对话框-Android自定义对话框

在本教程中,我将描述如何创建Android自定义Dialg。

Android对话框

创建Android项目AndroidDialog ; 文件->新建-> Android项目

Android版式
activity_android_dialog.xml

<RelativeLayout xmlns:android='http://schemas.android.com/apk/res/android'
    xmlns:tools='http://schemas.android.com/tools'
    android:layout_width='match_parent'
    android:layout_height='match_parent' >

    <Button
        android:id='@+id/btn_launch'
        android:layout_width='wrap_content'
        android:layout_height='wrap_content'
        android:layout_alignParentTop='true'
        android:layout_centerHorizontal='true'
        android:layout_marginTop='115dp'
        android:text='Launch Dialog' />

    <TextView
        android:id='@+id/textView1'
        android:layout_width='wrap_content'
        android:layout_height='wrap_content'
        android:layout_alignParentLeft='true'
        android:layout_alignParentTop='true'
        android:layout_marginLeft='28dp'
        android:layout_marginTop='54dp'
        android:text='@string/app_desc'
        android:textAppearance='?android:attr/textAppearanceLarge' />
    
</RelativeLayout>

对话框布局

dialog_layout.xml

<?xml version='1.0' encoding='utf-8'?>
<LinearLayout xmlns:android='http://schemas.android.com/apk/res/android'
    android:layout_width='fill_parent'
    android:layout_height='fill_parent'
    android:orientation='vertical'
    android:padding='10sp' >

    <EditText
        android:id='@+id/txt_name'
        android:layout_width='fill_parent'
        android:layout_height='wrap_content'
        android:hint='@string/dialog_uname'
        android:singleLine='true' >

        <requestFocus />
    </EditText>

    <EditText
        android:id='@+id/password'
        android:layout_width='match_parent'
        android:layout_height='wrap_content'
        android:ems='10'
        android:inputType='textPassword' >
    </EditText>

    <RelativeLayout
        android:layout_width='match_parent'
        android:layout_height='wrap_content' >

        <Button
            android:id='@+id/btn_login'
            android:layout_width='120dp'
            android:layout_height='wrap_content'
            android:text='@string/dialog_submit' />

        <Button
            android:id='@+id/btn_cancel'
            android:layout_width='120dp'
            android:layout_height='wrap_content'
            android:layout_alignParentTop='true'
            android:layout_marginLeft='10dp'
            android:layout_toRightOf='@+id/btn_login'
            android:text='@string/dialog_cancel' />
    </RelativeLayout>

</LinearLayout>

AndroidDialog活动

覆盖onCreateDialog(int id)onPrepareDialog(int id,Dialog对话框)方法,并添加以下代码,这些代码将创建您的自定义Android Dialog。

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;

public class AndroidDialog extends Activity {

 final private static int DIALOG_LOGIN = 1;

 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_android_dialog);

  Button launch_button = (Button) findViewById(R.id.btn_launch);

  launch_button.setOnClickListener(new View.OnClickListener() {

   @Override
   public void onClick(View v) {
    showDialog(DIALOG_LOGIN);
   }
  });
 }

 @Override
 protected Dialog onCreateDialog(int id) {

  AlertDialog dialogDetails = null;

  switch (id) {
  case DIALOG_LOGIN:
   LayoutInflater inflater = LayoutInflater.from(this);
   View dialogview = inflater.inflate(R.layout.dialog_layout, null);

   AlertDialog.Builder dialogbuilder = new AlertDialog.Builder(this);
   dialogbuilder.setTitle('Login');
   dialogbuilder.setView(dialogview);
   dialogDetails = dialogbuilder.create();

   break;
  }

  return dialogDetails;
 }

 @Override
 protected void onPrepareDialog(int id, Dialog dialog) {

  switch (id) {
  case DIALOG_LOGIN:
   final AlertDialog alertDialog = (AlertDialog) dialog;
   Button loginbutton = (Button) alertDialog
     .findViewById(R.id.btn_login);
   Button cancelbutton = (Button) alertDialog
     .findViewById(R.id.btn_cancel);
   final EditText userName = (EditText) alertDialog
     .findViewById(R.id.txt_name);
   final EditText password = (EditText) alertDialog
     .findViewById(R.id.password);

   loginbutton.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
     alertDialog.dismiss();
     Toast.makeText(
       AndroidDialog.this,
       'User Name : ' + userName.getText().toString()
         + '  Password : '
         + password.getText().toString(),
       Toast.LENGTH_LONG).show();
    }
   });

   cancelbutton.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
     alertDialog.dismiss();
    }
   });
   break;
  }
 }
}

祝您编程愉快,别忘了分享!

参考: Android对话框– Java斯里兰卡支持博客上来自我们JCG合作伙伴 Chathura Wijesinghe的Android自定义对话框


翻译自: https://www.javacodegeeks.com/2012/10/android-dialog-android-custom-dialog.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值