为自定义视图设置 adjustResize 行为(如在软键盘中)

Set adjustResize behaviour for custom view (like in soft keyboard)

我有一个自定义视图,想对其应用 adjustResize 逻辑,就像我们可以使用软键盘一样。

 android:windowSoftInputMode="adjustResize"

我的自定义视图扩展了 LinearLayout。显示此自定义视图时是否可以允许调整 window 的大小,使其内容不被视图覆盖?

任何帮助将不胜感激。

我没试过,但有一种可能:

假设您将自定义属性添加到自定义视图。我们称它为 "imeVisible"。

layout/view.xml:

    ...
    app:imeVisible="false"
    ...

layout-keysexposed/view.xml:

   ...
   app:imeVisible="true"
   ...

我假设当您在 layout-keysexposed 中有内容时,系统会为 IME show/hide 生成配置更改,因为通常不会。

但它会更改布局 (adjustResize),因此另一种更通用的方法是在您的自定义视图中覆盖 onLayout()

    @Override
    protected void onLayout(boolean changed, int l, int t, int r, int b) {

        super.onLayout(changed, l, t, r, b);

        int height = b - t;
        // logic here for different heights
    }