如果您想完全控制对话框,这很容易,只需创建一个自定义对话框。您将需要一个 XML 文件和一个方法,无论您想要使用自定义对话框的任何活动,这里是 XML 的代码和下面的方法。新建 XML 文件右键单击 res -> 新建 -> XML(靠近底部)-> 布局 XML 文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/color_lightGray"
tools:context="com.example.dwight.pwkeeper.MainActivity">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="84dp"
android:background="@color/color_darkGray"
android:minHeight="?attr/actionBarSize">
<ImageView
android:id="@+id/imageTB"
android:layout_width="70dp"
android:layout_height="wrap_content"
android:paddingBottom="2dp"
android:paddingLeft="2dp"
android:paddingRight="2dp"
android:paddingTop="4dp"
android:src="@drawable/lockgold" />
<TextView
android:text="@string/app_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/toolbar"
android:layout_alignParentStart="true"
android:layout_marginStart="30dp"
android:layout_marginBottom="20dp"
android:id="@+id/tvMA"
android:textStyle="bold"
android:textColor="@color/color_White"
android:textSize="28sp" />
</android.support.v7.widget.Toolbar>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentStart="true"
android:layout_below="@+id/toolbar"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:id="@+id/RLscreen">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Password"
android:layout_marginLeft="100dp"
android:layout_marginTop="60dp"
android:id="@+id/tvPW"
android:textColor="@android:color/black"
android:textStyle="bold"
android:textSize="26sp"/>
<EditText
android:id="@+id/etPW"
android:layout_width="260dp"
android:layout_height="wrap_content"
android:layout_marginLeft="220dp"
android:layout_marginTop="50dp"
android:backgroundTint="@color/color_Black"
android:cursorVisible="true"
android:ems="10"
android:gravity="bottom"
android:inputType="text"
android:textColor="@android:color/black"
android:textSize="26sp"
android:textStyle="bold" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Confirm Password"
android:layout_marginTop="140dp"
android:id="@+id/tvCPW"
android:textColor="@android:color/black"
android:textStyle="bold"
android:textSize="26sp"/>
<EditText
android:id="@+id/etCPW"
android:layout_width="260dp"
android:layout_height="wrap_content"
android:layout_marginLeft="220dp"
android:layout_marginTop="130dp"
android:backgroundTint="@color/color_Black"
android:ems="10"
android:inputType="text"
android:textColor="@android:color/black"
android:textSize="26sp"
android:textStyle="bold" />
<Button
android:id="@+id/btnSave"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="220dp"
android:layout_marginTop="220dp"
android:text="SAVE"
android:textColor="@color/color_lightGray"
android:textSize="30sp"
android:textStyle="bold" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="220dp"
android:layout_marginTop="220dp"
android:id="@+id/btnEnter"
android:textColor="@color/color_lightGray"
android:textStyle="bold"
android:textSize="30sp"
android:visibility="invisible"
android:onClick="onEnter"
android:text="ENTER" />
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="false"
android:layout_alignParentStart="false"
android:layout_marginTop="350dp"
android:src="@drawable/pwkeyb600" />
</RelativeLayout>
private void doCustom(){
/* This method uses the custom_dialog.xml file created for greater control over
the styling of the Custom Alert Dialog for various screen sizes and to be
able to set the text size of the dialog message text
*/
final Dialog openDialog = new Dialog(context);
openDialog.setContentView(R.layout.custom_dialog);
Button btnYES = (Button)openDialog.findViewById(R.id.btnYES);
Button btnNO = (Button)openDialog.findViewById(R.id.btnNO);
// if YES delete Master Password from TABLE_MPW
btnYES.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Write your code here to invoke YES event
db = helper.getReadableDatabase();
String q = "SELECT * FROM masterPW";
Cursor cursor = db.rawQuery(q,null);
// Above query gets TABLE_PW data from Col_IDI
// TABLE_PW will only ever have one row of data
int rowID = 99;
if(cursor.moveToFirst()){
rowID = cursor.getInt(cursor.getColumnIndex(Col_IDI));
str = cursor.getString(cursor.getColumnIndex(Col_MPW));
}
cursor.close();
// Line of code below WORKS deletes entire TABLE <=====
// Not a recommended way to re-set the master password
// db.delete(TABLE_PW, null, null);
String num = Integer.toString(rowID);
db.delete(TABLE_PW, Col_IDI + " = ?", new String[] { num });
db.close();
openDialog.dismiss();
Intent intentYY = new Intent(DetailsActivity.this, MainActivity.class );
startActivity( intentYY );
Toast.makeText(getApplicationContext(), "Change the Password", Toast.LENGTH_SHORT).show();
}
});
btnNO.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
openDialog.dismiss();
Intent intent = new Intent( DetailsActivity.this, ListActivity.class );
startActivity( intent );
Toast.makeText(getApplicationContext(), "Password NOT Changed", Toast.LENGTH_SHORT).show();
}
});
openDialog.show();
}