メソッドを使用しているため.setTitle()
、白い背景などのデフォルト設定でタイトルのみを設定しています。タイトルの背景色をカスタマイズする場合は、それを行うための xml が必要です。また、DialogFragments については、私の知識と経験から、public Dialog onCreateDialog
代わりにpublic View onCreateView
. そうすれば、呼び出すだけでダイアログが表示されるビューだけではなく、ダイアログを返すことができ.show()
ます。次に例を示します。
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
LayoutInflater inflater = getActivity().getLayoutInflater();
Bundle args = getArguments();
currentName = args.getString(ARG_CURRENT_NAME);
builder.setView(inflater.inflate(R.layout.name_dialog, null));
builder.setTitle("Rename Rapper Program");
builder.setMessage("Enter a new name for " + currentName + ":");
builder.setPositiveButton("Rename", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
newName = (EditText) getDialog().findViewById(R.id.new_name);
newProgName = newName.getText().toString();
mRename.renameProgram(currentName, newProgName);
}
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
dismiss();
}
});
return builder.create();
}
以下はダイアログ xml の例ですが、上記の DialogFragment でインフレートされているのは xml ではありません。
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:drawableLeft="@drawable/login"
android:layout_width="match_parent"
android:layout_height="64dp"
android:background="#FCD116"
android:text="@string/login"
android:textSize="36sp"/>
<EditText android:id="@+id/username"
android:inputType="textEmailAddress"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:layout_marginBottom="4dp"
android:hint="@string/un"/>
<EditText android:id="@+id/password"
android:inputType="textPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="4dp"
android:layout_marginLeft="4dp"
android:layout_marginRight="4dp"
android:layout_marginBottom="16dp"
android:fontFamily="sans-serif"
android:hint="@string/pw"/>
</LinearLayout>
はLinearLayout
、それに応じて配置される残りの子アイテムを設定しています。最初TextView
は私の「タイトル」バーとして機能し、次にEditText
s はダイアログの「本体」です。onCreateDialog
上記のコードの他のスニペットのように、プログラムでボタンを設定したため、xml にボタンはありません。