Android DialogFragment~部分可见的对话框按钮

Android DialogFragment~部分可见的对话框按钮,android,android-dialogfragment,Android,Android Dialogfragment,我正在设计一个自定义对话框(使用DialogFragment),它提示日历视图,允许用户选择日期。对话框显示,但“确定”和“取消”仅部分可见 这是我的自定义dialogfragment类 public class GetDateDialogFragment extends DialogFragment implements android.content.DialogInterface.OnClickListener { @Override public Dialog onCreateD

我正在设计一个自定义对话框(使用DialogFragment),它提示日历视图,允许用户选择日期。对话框显示,但“确定”和“取消”仅部分可见

这是我的自定义dialogfragment类

public class GetDateDialogFragment extends DialogFragment implements android.content.DialogInterface.OnClickListener {

@Override   
public Dialog onCreateDialog(Bundle savedInstanceState)
{
    LayoutInflater inflater = getActivity().getLayoutInflater();        
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

    View calendarView = inflater.inflate(R.layout.activity_datepicker, null);
    calendarView.findViewById(R.id.btnOk).setVisibility(View.INVISIBLE);
    calendarView.findViewById(R.id.btnCancel).setVisibility(View.INVISIBLE);
    builder.setView(calendarView);      

    AlertDialog dialog = builder.setTitle(R.string.datetitle).setMessage("Please enter Date")
            .setPositiveButton("OK", this).setNegativeButton("Cancel", null).create();
    dialog.show();


    dialog.getWindow().setLayout(LayoutParams.MATCH_PARENT, 600);       

    //position the buttons
    //Button positiveButton = dialog.getButton(DialogInterface.BUTTON_POSITIVE);
    //positiveButton.setY(positiveButton.getY()-100);

    //Button negativeButton = dialog.getButton(DialogInterface.BUTTON_NEGATIVE);
    //negativeButton.setY(negativeButton.getY()-100);

    return dialog;
}
请查找布局活动_datepicker.xml的以下代码

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"
android:layout_height="250dp"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<CalendarView
    android:id="@+id/calendarView"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:scrollbarStyle="insideOverlay"
    android:scrollbars="vertical" />

<Button
    android:id="@+id/btnOk"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentLeft="false"
    android:layout_alignRight="@id/calendarView"
    android:text="@string/btnOk" />

<Button
    android:id="@+id/btnCancel"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@id/calendarView"
    android:layout_alignParentBottom="true"
    android:text="@string/btnCancel" />


尝试将ok cacel按钮的可见性设置为“消失”,而不是“不可见”

LayoutInflater inflater = this.getLayoutInflater();
        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        View calendarView = inflater
                .inflate(R.layout.activity_datepicker, null);
        calendarView.findViewById(R.id.btnOk).setVisibility(View.GONE);
        calendarView.findViewById(R.id.btnCancel).setVisibility(View.GONE);
        builder.setView(calendarView);

        AlertDialog dialog = builder.setTitle("dfd")
                .setMessage("Please enter Date").setPositiveButton("OK", null)
                .setNegativeButton("Cancel", null).create();
        dialog.show();

        dialog.getWindow().setLayout(LayoutParams.MATCH_PARENT,
                LayoutParams.WRAP_CONTENT);

为什么将高度硬编码为600?我尝试进一步增加高度以查看是否有帮助,但无论我增加或减少高度,按钮都仅部分可见,然后显示布局活动\u datepicker。我已在原始帖子中添加了上面的布局文件供您参考。嗨,Vipul,btnOk和btnCancel是添加到布局中的自定义按钮。由于对话框本身提供了“确定”和“取消”按钮,因此我放弃了自定义按钮。我面临的问题是对话框默认附带的按钮。这些默认按钮仅部分可见。当您将“可见性”设置为“不可见”时,这些按钮仍然存在,只是不可见。您需要将其设置为“不可见”,这样它们就不会占用任何空间。请尝试运行此代码,它将起作用