カスタムダイアログを機能させようとしています。タイトル、基本的なTextMessage、および通常はボタンが表示されるカスタムレイアウトは含まれていません。AlertDialog.Builderを使用してこれを達成しようとしましたが、Dialogを拡張し、Dialogでメソッドを呼び出しても、期待した結果が得られませんでした。
これはレイアウトです。カスタムButtonArea(layout / dialog_footer)として使用するのが好きです。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<CheckBox
android:id="@+id/dialog_checkbox"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/never_show_again"
android:textColor="@color/black"
android:visibility="gone"
android:background="@color/dialog_button_background"/>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/dialog_checkbox"
android:layout_alignWithParentIfMissing="true"
android:orientation="horizontal"
android:background="@color/dialog_button_background"
android:paddingBottom="-10dip">
<Button
android:id="@+id/dialog_btn_positive"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight=".5"
android:text="@string/ok"
android:gravity="center"
android:visibility="gone"
/>
<Button
android:id="@+id/dialog_btn_negative"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight=".5"
android:text="@string/btn_cancel"
android:visibility="gone" />
</LinearLayout>
</RelativeLayout>
最も簡単な試みは次のようになります。
AlertDialog.Buiilder builder = new AlertDialog.Builder(context);
builder.setMessage("my Message");
Dialog dialog = builder.create();
//builder has `setView for Message or setCustomTitle, but no setCustomFooter
LayoutInflater inflater = LayoutInflater.from(context);
View footer = inflater.inflate(R.layout.dialog_footer);
//either NullPointer Exception
dialog.addContentView(footer, footer.getLayoutParams);
//or AndroidRuntimeException (requestFeature() must be called befoire adding content)
dialog.addContentView(footer, new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
レイアウトの上部にTextViewを配置して「MessageArea」をエミュレートしようとすると、機能しますが、下部に非常に醜い黒い境界線があります(カスタムのDialog-Themeだと思います)。
システムダイアログの「ルックアンドフィール」を維持しながら、ボタンを自分のビューに置き換えて、自分で何かを処理するための最良の方法は何ですか?