首页 > 解决方案 > 键盘可见时调整 DialogFragment 的大小

问题描述

(我正在使用 Xamarin C#,但代码与 Java 相同)

我创建了DialogFragment一个自定义布局。OnCreateView看起来像这样:

public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
  View view = inflater.Inflate(Resource.Layout.dialog_feedback, container);
  int scale = Context.Resources.DisplayMetrics.HeightPixels;
  int height = scale / 2;
  Dialog.Window.SetLayout(ViewGroup.LayoutParams.MatchParent, height);
  Dialog.Window.SetGravity(GravityFlags.Bottom | GravityFlags.CenterHorizontal);
  return view;
}

OnCreate看起来像这样:

public override void OnCreate(Bundle savedInstanceState)
{
  base.OnCreate(savedInstanceState);
  SetStyle(0, Resource.Style.dialog_no_border);
}

这是风格:

<style name="dialog_no_border" parent="@android:style/Theme.Dialog">
  <item name="android:windowFrame">@null</item>
  <item name="android:windowBackground">@android:color/transparent</item>
  <item name="android:windowIsFloating">false</item>
  <item name="android:windowContentOverlay">@null</item>
  <item name="android:windowTitleStyle">@null</item>
  <item name="android:colorBackgroundCacheHint">@null</item>
  <item name="android:backgroundDimEnabled">true</item>
</style>

对话框正在膨胀的布局包含 aConstraintLayout作为父级,并且其中有一个AppCompatEditText

当我打开对话框并单击 EditText 时,键盘与 Edittext 重叠。我想要做的是,当键盘弹出时,它应该向上推并在DialogFragment其自身上方显示 EditText。我如何做到这一点?

我尝试在清单内的标签中设置android:windowSoftInputMode="adjustNothing", android:windowSoftInputMode="adjustPan",但没有运气!android:windowSoftInputMode="adjustResize"activity

那么,我该如何实现呢?

标签: javaandroidxamarin

解决方案


推荐阅读