代码之家  ›  专栏  ›  技术社区  ›  makkhokher

在上述android N的对话框中,Edittext无法从键盘接收输入

  •  0
  • makkhokher  · 技术社区  · 5 年前

    我正在设置一个对话框,从用户那里获取pin号码。对话框确实与键盘一起出现,但edittext不接收键盘的输入。同样的对话框也适用于android 6。下面是代码

    对话框代码

        LayoutInflater layoutInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View promptsView = layoutInflater.inflate(R.layout.activity_password,
                null);
        Dialog dialog = new Dialog(getApplicationContext()
                , android.R.style.Theme_Black_NoTitleBar_Fullscreen);
        dialog.setCanceledOnTouchOutside(false);
        dialog.setCancelable(false);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
        }
        else {
            dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_PHONE);
        }
        dialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT,
                WindowManager.LayoutParams.MATCH_PARENT);
        dialog.setContentView(promptsView);
        dialog.getWindow().setGravity(Gravity.CENTER);
        dialog.show();
    

    XML布局代码:

    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/colorAccent">
        <TextView
            android:id="@+id/textView"
            android:layout_width="match_parent"
            android:layout_height="32dp"
            android:text="Enter Your Pin"
            android:textSize="16sp"
            android:gravity="center"
            android:textColor="#fff"
            android:layout_marginTop="@dimen/activity_vertical_margin"
            />
        <EditText
            android:layout_width="150dp"
            android:layout_height="wrap_content"
            android:layout_margin="5dp"
            android:layout_centerInParent="true"
            android:hint="Enter Pin"
            android:id="@+id/enter_pin"
            android:inputType="numberPassword"
            android:textAlignment="center"
    
            />
        <Button
            android:id="@+id/confirm"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/enter_pin"
            android:text="Confirm"
            android:layout_marginTop="8dp"
            android:layout_marginBottom="8dp"
            android:layout_marginLeft="32dp"
            android:layout_marginRight="32dp"
            android:textSize="12dp"
            android:textColor="#fff"
            android:background="@android:color/transparent"
            />
    </RelativeLayout>
    
    0 回复  |  直到 5 年前
        1
  •  0
  •   Android Geek    5 年前

    请在对话框的Java文件中尝试以下代码:

                    Dialog dialog = new Dialog(MainActivity.this);
                    dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
                    dialog.setContentView(R.layout.activity_password);
                    dialog.setCanceledOnTouchOutside(true);
                    dialog.getWindow().setLayout(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
                    Window window = dialog.getWindow();
                    window.setGravity(Gravity.CENTER);
                    dialog.show();
    

    这段代码适用于上面的android N和下面的android N。

    我希望它对你有用。