我有一个recyclerview
,其中有一个编辑文本,该文本将隐藏并在单击某些按钮时打开。
请参阅screen 1
。
单击拒绝或接受时,将显示视图:
现在,我的recyclerview
正在向下扩展,但我希望它像这样向上扩展:
默认情况下,它会向下扩展:
我希望它像这样向上扩展:
类似地,当键盘打开时,我希望整个recyclerview
像这样位于键盘上方。
默认情况下,它不会向上移动:
我想要这样的东西:
该功能应采用什么方法?
我需要计算单元格高度,键盘高度还是其他方法?
请附上相关链接。
谢谢
答案 0 :(得分:1)
我是为我的聊天类编写的,您可以根据自己的需要重写此代码段。
private boolean keyboardShown(View rootView) {
final int softKeyboardHeight = 100;
Rect r = new Rect();
rootView.getWindowVisibleDisplayFrame(r);
DisplayMetrics dm = rootView.getResources().getDisplayMetrics();
int heightDiff = rootView.getBottom() - r.bottom;
return heightDiff > softKeyboardHeight * dm.density;
}
messageEditText.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
if (keyboardShown(messageEditText.getRootView())) {
Log.d("keyboard", "keyboard UP");
if (keyboardUp == false) {
if (results.size() > 0)
chatList.smoothScrollToPosition(results.size()+1);
keyboardUp = true;
}
} else {
Log.d("keyboard", "keyboard Down");
keyboardUp = false;
}
}
});
答案 1 :(得分:0)
让我们将问题分为两部分,向下滚动RecyclerView并在显示键盘时显示单元格。
只需将scrollToPosition(index)
与单元格索引一起使用
您只需在活动中将android:windowSoftInputMode更改为AdjustSize:
<activity
android:windowSoftInputMode="adjustResize"
android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
或仅在片段中:
window.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE)