【问题标题】:Custom popup dialog with input field [closed]带有输入字段的自定义弹出对话框[关闭]
【发布时间】:2016-03-08 07:05:31
【问题描述】:

如何为 Android 创建弹出式输入字段? 我需要 Xml 和 Java 代码。

【问题讨论】:

  • 欢迎来到 SO。这不是代码工厂

标签: android android-dialog


【解决方案1】:

尝试使用此自定义弹出对话框代码 main.xml

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

        <Button
            android:id="@+id/buttonPrompt"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Show Prompt Dialog" />

        <EditText
            android:id="@+id/editTextResult"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" >

        </EditText>
  </LinearLayout>

自定义.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_root"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:padding="10dp" >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Type Your Message : "
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <EditText
        android:id="@+id/editTextDialogUserInput"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >

        <requestFocus />
    </EditText>
</LinearLayout>

main.java

package cm.kikani.kalpesh;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {

    final Context context = this;
    private Button button;
    private EditText result;

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        // components from main.xml
        button = (Button) findViewById(R.id.buttonPrompt);
        result = (EditText) findViewById(R.id.editTextResult);

        // add button listener
        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {

                // get prompts.xml view
                LayoutInflater li = LayoutInflater.from(context);
                View promptsView = li.inflate(R.layout.custom, null);

                AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
                        context);

                // set prompts.xml to alertdialog builder
                alertDialogBuilder.setView(promptsView);

                final EditText userInput = (EditText) promptsView
                        .findViewById(R.id.editTextDialogUserInput);

                // set dialog message
                alertDialogBuilder
                    .setCancelable(false)
                    .setPositiveButton("OK",
                      new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog,int id) {
                        // get user input and set it to result
                        // edit text
                        result.setText(userInput.getText());
                        }
                      })
                    .setNegativeButton("Cancel",
                      new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog,int id) {
                        dialog.cancel();
                        }
                      });

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

                // show it
                alertDialog.show();

            }
        });
    }
}

【讨论】:

    【解决方案2】:

    您可以为您的案例创建自定义对话框类。

    your_custom_dialog.xml

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="120dp"
        android:background="@android:color/black"
        android:orientation="vertical" >
    
        <TextView
            android:id="@+id/txt_exit"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:layout_margin="10dp"
            android:text="Do you realy want to exit ?"
            android:textColor="@android:color/white"
            android:textSize="16sp"
            android:textStyle="bold"/>
    
    
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:background="@android:color/blue"
            android:orientation="horizontal" >
    
            <Button
                android:id="@+id/btn_yes"
                android:layout_width="100dp"
                android:layout_height="30dp"
                android:background="@android:color/white"
                android:clickable="true"
                android:text="Yes"
                android:textColor="@android:color/white"
                android:textStyle="bold" />
    
            <Button
                android:id="@+id/btn_no"
                android:layout_width="100dp"
                android:layout_height="30dp"
                android:layout_marginLeft="5dp"
                android:background="@android:color/white"
                android:clickable="true"
                android:text="No"
                android:textColor="@android:color/blue"
                android:textStyle="bold" />
        </LinearLayout>
    
    </LinearLayout>
    

    而且你的 CustomDialog 类必须扩展 Dialog

    public class CustomDialogClass extends Dialog {
    
      public Activity activity;
      public Dialog dialog;
      public Button yes, no;
    
      public CustomDialogClass(Activity a) {
        super(a);
        // TODO Auto-generated constructor stub
        this.activity = a;
      }
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.custom_dialog);
    
        yes = (Button) findViewById(R.id.btn_yes);
        no = (Button) findViewById(R.id.btn_no);
    
        yes.setOnClickListener(new OnClickListener() {
        public void onClick(View v)
        {
                 activity.finish();
           } 
        });
    
        no.setOnClickListener(new OnClickListener() {
        public void onClick(View v)
        {
                 dismiss();
           } 
        });
    
      }
    
    }
    

    你可以这样称呼它

    CustomDialogClass customDialog =new CustomDialogClass(activity);
    customDialog .show(); 
    

    【讨论】:

      猜你喜欢
      • 2015-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-23
      相关资源
      最近更新 更多