android - API below 21 的 alertdialog.builder.setview 的替代方案

标签 android android-layout datepicker android-alertdialog android-timepicker

据我们所知,alertdialog.builder.setview 函数在 API 21 中引入,它允许我们设置布局。有没有其他方法可以实现这个,我也不想使用 support library enter image description here

这就是我想要的

听到的是代码

这是datetime_dialog.xml 文件

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linearLayout2"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <TimePicker
        android:id="@+id/timePicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <DatePicker
        android:id="@+id/datePicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:calendarViewShown="false" />

</LinearLayout>

java文件代码

    AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
        MainActivity.this, AlertDialog.THEME_HOLO_DARK);
alertDialogBuilder.setView(R.layout.datetime_dialog);
alertDialogBuilder.setPositiveButton("Done",
        new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                // go to a new activity of the app
                Intent positveActivity = new Intent(
                        getApplicationContext(),
                        MainActivity.class);
                startActivity(positveActivity);
            }
        });
// set negative button: No message
alertDialogBuilder.setNegativeButton("Cancel",
        new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                // cancel the alert box and put a Toast to the
                // user
                dialog.cancel();

            }
        });

AlertDialog alertDialog = alertDialogBuilder.create();
// show alert
alertDialog.show();

我想支持这个直到 API 9 是否可能

最佳答案

您首先需要从布局创建 View ,其中:

View v = LayoutInflater.inflate(R.layout.ID, null);
AlertDialog.Builder ad = new AlertDialog.Builder(Activity);
ad.setview(v);

关于android - API below 21 的 alertdialog.builder.setview 的替代方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32979297/

相关文章:

java - 为什么 ContentProvider 在 App 更新后返回空光标?

android - .gradlew命令行构建中找不到dokka?

android - 在装有Android 5.x.x的每台三星设备上错误放大类ImageView

java - 日期选择器不显示使用 TemplateBuilder 动态创建的行

javascript - 如何在日期选择器中添加预先选择的日期

javascript - 使用日期选择器时如何在输入字段日期中,当按按键上的逗号替换为点时

java - 当可滚动的 recyclerView 仅占手机屏幕的一半时,如何让 Activity 中的整个屏幕滚动

android - 使用 Appium-Python 在 Android 应用程序中垂直滚动

android - 使用 ViewFlipper 或 ViewPager 制作轮播

android - 用 ImageButton 模仿 ActionBar 菜单