所以我有一个警报对话框,当按下按钮时我会从活动中调用它:
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字段时,对话框没有被推高,因此底部的按钮被阻止:
所以奇怪的是对话框里面的文字被推了......但是窗口不是:(。
我尝试了什么:
<android:windowSoftInputMode="adjustPan">
我已经将它添加到manifest.xml中,并发现它仍然没有移动对话框。
<activity android:windowSoftInputMode="adjustPan|adjustResize"> </activity>
我也试过了,但仍然没有影响。
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
我也试过没有运气,同样的行为发生了对话没有向上移动但内部文字被推高了。所以我尝试了在这个网站上找到的所有东西,我很难找到解决方案。我觉得问题与布局有关。
如果有人能帮我找到一个很棒的解决方案。
由于
答案 0 :(得分:1)
我修好了:D。
所以唯一的问题是我使用的是构造函数构建器(Activity ...,Theme ...)。
使用构造函数构建器(Activity ...)(没有主题)工作!我猜是因为它从该活动中获取了主题设置。