当键盘显示时,我的Android AlertDialog没有向前移动

时间:2015-11-16 23:40:35

标签: android keyboard alert dialog

所以我有一个警报对话框,当按下按钮时我会从活动中调用它:

Button editLocation = (Button) itemView.findViewById(R.id.edit_trained_location_button);
    editLocation.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            showEditLocationDialog();
        }
    });


public void showEditLocationDialog(){

    LayoutInflater inflater = activity.getLayoutInflater();
    AlertDialog.Builder builder =
            new AlertDialog.Builder(activity, R.style.AppTheme);
    builder.setTitle("Edit Location name");
    builder.setPositiveButton("Save", null);
    builder.setNegativeButton("Cancel", null);
    builder.setView(inflater.inflate(R.layout.location_dialog, null));
    Window newLocationDialog = builder.show().getWindow();

    newLocationDialog.setLayout(DpToPxHelper.convertToPx(350, activity),
                                DpToPxHelper.convertToPx(175, activity));
    newLocationDialog.setDimAmount(.8f);
    newLocationDialog.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);

}

这是一个布局文件。

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

 <EditText
    android:isScrollContainer="false"
    android:id="@+id/location_name_edit_text"
    android:inputType="text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_marginTop="16dp"
    android:layout_marginLeft="4dp"
    android:layout_marginRight="4dp"
    android:layout_marginBottom="4dp"/>
 </LinearLayout>

(按钮在构建器中定义,布局只允许我创建EditText字段。)

所以我的问题是当我调出键盘将文本输入EditText字段时,对话框没有被推高,因此底部的按钮被阻止:

Before keyboard

After Keyboard

所以奇怪的是对话框里面的文字被推了......但是窗口不是:(。

我尝试了什么:

  1. <android:windowSoftInputMode="adjustPan"> 我已经将它添加到manifest.xml中,并发现它仍然没有移动对话框。

  2. <activity android:windowSoftInputMode="adjustPan|adjustResize"> </activity> 我也试过了,但仍然没有影响。

  3. getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 我也试过没有运气,同样的行为发生了对话没有向上移动但内部文字被推高了。
  4. 没有尝试任何事情(因此没有在清单或.setSoftInputMode(...)中声明)我看到相同的行为,所以我认为步骤1,2,3无论如何都没有任何影响。
  5. 所以我尝试了在这个网站上找到的所有东西,我很难找到解决方案。我觉得问题与布局有关。

    如果有人能帮我找到一个很棒的解决方案。

    由于

1 个答案:

答案 0 :(得分:1)

我修好了:D。

所以唯一的问题是我使用的是构造函数构建器(Activity ...,Theme ...)。

使用构造函数构建器(Activity ...)(没有主题)工作!我猜是因为它从该活动中获取了主题设置。