为自定义视图设置 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
}
我有一个自定义视图,想对其应用 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
}