カスタム ダイアログを作成するだけでダイアログを完全に制御したい場合、これは簡単です。カスタム ダイアログを使用するアクティビティには、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();
}