您的位置:首页 > 其它

Dialog修改密码的显示方式小巧写法

2014-08-06 15:39 225 查看
private class MyDialog extends Dialog implements View.OnClickListener {
private EditText prePassword;
private EditText newPassword;
private EditText confirmPassword;
private Button submit;
private Button cancel;
Context context;

public MyDialog(Context context) {
super(context);
this.context = context;
}

public MyDialog(Context context, int theme) {
super(context, theme);
this.context = context;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.setContentView(R.layout.setting_user_password_dialog);
prePassword = (EditText) findViewById(R.id.prePassword);
newPassword = (EditText) findViewById(R.id.newPassword);
confirmPassword = (EditText) findViewById(R.id.confirmPassword);
submit = (Button) findViewById(R.id.dialog_button_ok);
cancel = (Button) findViewById(R.id.dialog_button_cancel);
submit.setOnClickListener(this);
cancel.setOnClickListener(this);
}

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (v.equals(submit)) {
Toast.makeText(SimpleSettingActivity.this,
"you press submit button", Toast.LENGTH_LONG).show();
System.out.println("xxxxxxxxxxxxxxxxxxxxxxxxxxxxx");
} else if (v.equals(cancel)) {

}

}

}




怎么样,是不是感觉和Activity有一拼?

网络有云,有图有真相,下面给大家看一下图:



下面就一在实际开发中,的各个文件的创建方式,给大家逐一讲解,这个东东的生成过程,希望能够对Android初学者,有一点帮助。

1.编写承载Dialog的Activity。MainActivity;的布局文件main.xml其代码如下:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:padding="8dp"

android:background="#FFFFFF"

>

<Button

android:id="@+id/popUpDialog"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="弹出自定义对话框" />

</LinearLayout>

package org.gch.demo;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

2.编写MainActivity的相关代码(还没有添加MyDialog的内容)

public class MainActivity extends Activity implements OnClickListener{

private Button popUpDialog;

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

popUpDialog=(Button)findViewById(R.id.popUpDialog);

popUpDialog.setOnClickListener(this);

}

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

}

}

3.下面定义MyDialog的布局方式文件:setting_user_password_dialog.xml

为了区别EditText是否获得焦点,给EditText的background添加了一个反射器bg_edittext.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="@drawable/dialog_title_image"

android:gravity="center_vertical|center_horizontal"

android:orientation="vertical"

android:padding="10dp" >

<RelativeLayout

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:minHeight="48dp"

android:paddingLeft="30dp"

android:paddingTop="10dp" >

<ImageView

android:id="@+id/dialog_title_image"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:contentDescription="@null"

android:src="@drawable/ic_launch" />

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:layout_centerInParent="true"

android:gravity="center"

android:text="修改密码"

android:textColor="#000000"

android:textSize="20sp" />

</RelativeLayout>

<View

android:layout_width="fill_parent"

android:layout_height="1dp"

android:background="#000000" />

<TableLayout

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_margin="8dp" >

<TableRow

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginTop="8dp"

android:gravity="center_vertical" >

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="原密码"

android:textColor="#000000"

android:textSize="14sp" />

<EditText

android:id="@+id/prePassword"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_marginLeft="8dp"

android:layout_weight="1"

android:background="@drawable/bg_edittext"

android:hint="请输入原密码"

android:inputType="textPassword"

android:minHeight="48dp"

android:paddingLeft="8dp"

android:paddingRight="8dp"

android:textColor="#000000"

android:textSize="16sp" />

</TableRow>

<TableRow

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginTop="8dp"

android:gravity="center_vertical" >

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="密码"

android:textColor="#000000"

android:textSize="14sp" />

<EditText

android:id="@+id/newPassword"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_marginLeft="8dp"

android:layout_weight="1"

android:background="@drawable/bg_edittext"

android:hint="请再次输入密码"

android:inputType="textPassword"

android:minHeight="48dp"

android:paddingLeft="8dp"

android:paddingRight="8dp"

android:textColor="#000000"

android:textSize="16sp" />

</TableRow>

<TableRow

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:layout_marginTop="8dp"

android:gravity="center_vertical" >

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="确认密码"

android:textColor="#000000"

android:textSize="14sp" />

<EditText

android:id="@+id/confirmPassword"

android:layout_width="0dp"

android:layout_height="wrap_content"

android:layout_marginLeft="8dp"

android:layout_weight="1"

android:background="@drawable/bg_edittext"

android:hint="请输入原密码"

android:inputType="textPassword"

android:minHeight="48dp"

android:paddingLeft="8dp"

android:paddingRight="8dp"

android:textColor="#000000"

android:textSize="16sp" />

</TableRow>

</TableLayout>

<View

android:layout_width="fill_parent"

android:layout_height="1dp"

android:background="#000000" />

<RelativeLayout

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:gravity="bottom|center_horizontal"

android:paddingBottom="10dp"

android:paddingTop="10dp" >

<Button

android:id="@+id/dialog_button_ok"

android:layout_width="90dp"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:text="submit"

android:textSize="16sp"

/>

<Button

android:id="@+id/dialog_button_cancel"

android:layout_width="90dp"

android:layout_height="wrap_content"

android:layout_marginLeft="30dp"

android:layout_toRightOf="@id/dialog_button_ok"

android:text="cancel"

android:textSize="16sp" />

</RelativeLayout>

</LinearLayout>

4.bg_edittext.xml源代码:

在bg_edittext.xml文件中使用边框的颜色来区别,EditText是否获得焦点;

<?xml version="1.0" encoding="UTF-8"?>

<selector xmlns:android="http://schemas.android.com/apk/res/android">

<item android:state_window_focused="false"

android:drawable="@drawable/contact_edit_edittext_normal" />

<item android:state_focused="true"

android:drawable="@drawable/contact_edit_edittext_focused" />

</selector>

5.Contact_edit_edittext_noraml.xml的源代码:

<?xml version="1.0" encoding="UTF-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android">

<solid android:color="#FFFFFF" />

<corners android:radius="4dp" />

<stroke android:width="1dp" android:color="#DCDCDC" />

</shape>

6.Contact_edit_edittext_focused.xml的源代码:

<?xml version="1.0" encoding="UTF-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android">

<solid android:color="#FFFFFF" />

<corners android:radius="4dp" />

<stroke android:width="1dp" android:color="#0000FF" />

</shape>

下面在MainActivity中定义MyDialog(MyDialog作为MainActivity的内部类);

private class MyDialog extends Dialog implements View.OnClickListener {

private EditText prePassword;

private EditText newPassword;

private EditText confirmPassword;

private Button submit;

private Button cancel;

Context context;

public MyDialog(Context context) {

super(context);

this.context = context;

}

public MyDialog(Context context, int theme) {

super(context, theme);

this.context = context;

}

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

this.setContentView(R.layout.setting_user_password_dialog);

prePassword = (EditText) findViewById(R.id.prePassword);

newPassword = (EditText) findViewById(R.id.newPassword);

confirmPassword = (EditText) findViewById(R.id.confirmPassword);

submit = (Button) findViewById(R.id.dialog_button_ok);

cancel = (Button) findViewById(R.id.dialog_button_cancel);

submit.setOnClickListener(this);

cancel.setOnClickListener(this);

}

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

if (v.equals(submit)) {

Toast.makeText(MainActivity.this,

"you press submit button", Toast.LENGTH_LONG).show();

System.out.println("xxxxxxxxxxxxxxxxxxxxxxxxxxxxx");

} else if (v.equals(cancel)) {

}

}

}

7.下面在values/styles.xml中定义将要显示的MyDialog的风格——setttinguserpassworddialog

<style name="setttinguserpassworddialog" parent="@android:Theme.Dialog">

<item name="android:windowFrame">@null</item>

<item name="android:windowNoTitle">true</item>

<item name="android:windowBackground">@drawable/dialog_title_image</item>

<item name="android:windowIsFloating">true</item>

<item name="android:windowContentOverlay">@null</item>

</style>

8.定义要显示的MyDialog的背景——dialog_title_image.xml

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android" >

<corners

android:bottomLeftRadius="16dp"

android:bottomRightRadius="16dp"

android:topLeftRadius="16dp"

android:topRightRadius="16dp" />

<!-- 描边 -->

<stroke

android:width="1dp"

android:color="#00FF00"/>

<!-- 渐变 -->

<gradient

android:startColor="#FFFFFF"

android:endColor="#00FF00"

android:angle="270"/>

</shape>

9.在MainActivity的onClick方法中添加创建MyDialog的方法

Dialog dialogx = new MyDialog(MainActivity.this,

R.style.setttinguserpassworddialog);

// 设置它的ContentView

dialogx.setContentView(R.layout.setting_user_password_dialog);

dialogx.show();

源代码下载地址:http://download.csdn.net/detail/guchuanhang/7719451
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: