如何创建弹出窗口,如Android中的图像所示?

时间:2014-08-16 18:17:26

标签: android dialog popup

Android dialog showing a calendar

我想在我的Android应用中创建一个弹出窗口,如上面链接中的图片所示。我正在构建一个测验应用程序,我想在其中导航一组问题。如何弹出如图所示?

1 个答案:

答案 0 :(得分:1)

您可以使用AlertDialog创建它,执行以下操作:

首先,创建一个布局,在其中放置要在AlertDialog上显示的内容。在这种情况下,我将显示前5个数字行(例如,此文件布局/ example.xml)

<强>布局/的example.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android">

<LinearLayout
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_weight="1">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="1"
        android:id="@+id/tv1"
        android:layout_gravity="center_horizontal"
        android:textSize="30dp" />
</LinearLayout>

<LinearLayout
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_weight="1">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="2"
        android:id="@+id/tv2"
        android:layout_gravity="center_horizontal"
        android:textSize="30dp" />
</LinearLayout>

<LinearLayout
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_weight="1">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="3"
        android:id="@+id/tv3"
        android:layout_gravity="center_horizontal"
        android:textSize="30dp" />
</LinearLayout>

<LinearLayout
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_weight="1">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="4"
        android:id="@+id/tv4"
        android:layout_gravity="center_horizontal"
        android:textSize="30dp" />
</LinearLayout>

<LinearLayout
    android:orientation="vertical"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_weight="1">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="5"
        android:id="@+id/tv5"
        android:textSize="30dp"
        android:layout_gravity="center_horizontal" />
</LinearLayout>

</LinearLayout>

然后用AlertDialog调用它,就像这样:

在您的活动中

    LayoutInflater factory = LayoutInflater.from(this);

    final View myCustomView = factory.inflate(R.layout.example, null);

    final TextView tv1 = (TextView) myCustomView.findViewById(R.id.tv1);
    final TextView tv2 = (TextView) myCustomView.findViewById(R.id.tv2);
    final TextView tv3 = (TextView) myCustomView.findViewById(R.id.tv3);
    final TextView tv4 = (TextView) myCustomView.findViewById(R.id.tv4);
    final TextView tv5 = (TextView) myCustomView.findViewById(R.id.tv5);

    /* Set the listeners */
    tv1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                /* Do stuff */
             }
            });

    tv2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                /* Do stuff */
             }
            });

    tv3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                /* Do stuff */
             }
            });

    tv4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                /* Do stuff */
             }
            });
    tv5.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                /* Do stuff */
             }
            });


     final AlertDialog.Builder alert = new AlertDialog.Builder(this);
     alert.setTitle("Goto").setView(textEntryView); /*Remember to use @string */
     alert.show();