我正在尝试让自定义对话框工作。它应该没有标题、基本的 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”,它可以工作,但底部有非常难看的黑色边框(我猜它是自定义对话框主题)。
保持系统对话框的“外观和感觉”的最佳方法是什么,但用我自己的视图替换按钮并自己处理任何事情?