我实现了一个布局,以便成为我的自定义对话框布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/gray_back"
xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:id="@+id/mainLayout"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="20dp"
android:layout_centerInParent="true">
<ImageView
android:src="@drawable/user"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="center"
android:layout_gravity="center"
android:contentDescription="@string/app_name" />
<EditText
android:id="@+id/username"
android:background="@android:color/white"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="20dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:gravity="center"
android:layout_gravity="center"
android:hint="@string/new_profile_name" />
<View
android:layout_width="fill_parent"
android:layout_height="1dip"
android:background="?android:attr/dividerHorizontal" />
</LinearLayout>
<LinearLayout
style="?android:attr/buttonBarStyle"
android:layout_below="@id/mainLayout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingTop="0dip"
android:measureWithLargestChild="true">
<Button
android:id="@+id/cancel"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Cancel"/>
<Button
android:id="@+id/ok"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="Ok"/>
</LinearLayout>
我以编程方式创建它:
final Dialog dialog = new Dialog(context);
dialog.setContentView(R.layout.dialog_add_profile);
Button dialogButton = (Button) dialog.findViewById(R.id.cancel);
// if button is clicked, close the custom dialog
dialogButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
}
});
dialog.show();
但是我的对话框显示如下:
如何将图像中的剩余空间删除到布局顶部?
我想试试这个:
dialog.setWindowFeature(Window.WINDOW_NO_TITLE);
但它崩溃了......我怎样才能删除剩余空间?
答案 0 :(得分:3)
创建新样式,添加:
<style name="NoTitleDialog" parent="@android:Theme.Dialog">
<item name="android:windowNoTitle">true</item> </style>
最后:
Dialog d = new Dialog(this, R.style.nameOfStyle);
编辑: This answer
答案 1 :(得分:1)
尝试使用DialogFragment类,它不会在自定义视图上强制标题。你可以把它变成你活动中的静态嵌套类。
public static class MyDialogFragment extends DialogFragment {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setView(R.layout.custom_view);
return builder.create();
}
}
让您的Activity扩展AppCompatActivity,使用导入
import android.support.v4.app.DialogFragment;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
然后显示对话框实例化对话框片段调用show()传递支持片段管理器和字符串标记,如下所示:
MyDialogFragment dialogFragment = new MyDialogFragment();
dialogFragment.show(getSupportFragmentManager(), "f1");