java如何在键盘弹出时同步RecyclerView的位置?
我使用RecyclerView
来聊天。请参阅下面附带的屏幕截图,以便更好地了解问题:
IMAGE-1
IMAGE-2
现在,这里的问题是当键盘打开时,用户必须能够看到最后发送/接收的消息,但是在image-2
中,正如您所看到的,RecyclerView
的滚动位置在较早的消息处
我尝试了一些改变:
已更改
安卓:windowSoftInputMode="adjustResize"
更改了RecyclerView的平滑滚动,
rview.smoothScrollToPosition(adapter_data.size());
我可以做些什么来解决这个问题,以便在键盘打开时收到最后一条消息
编辑-1
这是我的适配器的代码:
自定义适配器。班级
public class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.FeedsViewHolder>
{
DataHolder d1 = new DataHolder();
public class FeedsViewHolder extends RecyclerView.ViewHolder
{
private TextView chat;
private Typeface face;
FeedsViewHolder(View itemView)
{
super(itemView);
chat = (TextView)itemView.findViewById(R.id.chatMessage);
face = Typeface.createFromAsset(itemView.getContext().getAssets(), "Fonts/Roboto-Regular.ttf");
chat.setTypeface(face);
}
}
private static class DataHolder
{
List<Text> feeds;
}
CustomAdapter(List<Text> feeds)
{
this.d1.feeds = feeds;
}
@Override
public void onAttachedToRecyclerView(RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
}
@Override
public FeedsViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.chat_message, viewGroup, false);
FeedsViewHolder pvh = new FeedsViewHolder(v);
return pvh;
}
@Override
public void onBindViewHolder(FeedsViewHolder feedViewHolder, int i)
{
RelativeLayout.LayoutParams params =
(RelativeLayout.LayoutParams)feedViewHolder.chat.getLayoutParams();
if(d1.feeds.get(i).isMachineOrHuman())
{
params.addRule(RelativeLayout.ALIGN_PARENT_START);
feedViewHolder.chat.setLayoutParams(params);
feedViewHolder.chat.setBackgroundResource(R.drawable.user);
feedViewHolder.chat.setText(d1.feeds.get(i).getMessage());
}
else
{
params.addRule(RelativeLayout.ALIGN_PARENT_END);
feedViewHolder.chat.setLayoutParams(params);
feedViewHolder.chat.setBackgroundResource(R.drawable.ais);
feedViewHolder.chat.setText(d1.feeds.get(i).getMessage());
}
}
@Override
public int getItemCount()
{
if(d1.feeds!=null)
{
return d1.feeds.size();
}
else
{
return 0;
}
}
}
聊天信息。xml
<RelativeLayout xmlns:安卓="http://schemas.安卓.com/apk/res/安卓"
安卓:id="@+id/chat_rel"
安卓:layout_width="match_parent"
安卓:layout_height="wrap_content">
<TextView 安卓:id="@+id/chatMessage"
安卓:layout_width="wrap_content"
安卓:layout_marginTop="10dp"
安卓:layout_marginBottom="10dp"
安卓:layout_marginStart="10dp"
安卓:layout_marginEnd="10dp"
安卓:gravity="start"
安卓:textSize="15sp"
安卓:textColor="#ffffff"
安卓:layout_height="wrap_content"
xmlns:安卓="http://schemas.安卓.com/apk/res/安卓" />
安卓:windowSoftInputMode="adjustResize"
在这里工作得很好,但问题与RecyclerView
有关,我正在寻找一种编程方式,当键盘弹出时滚动到RecyclerView
的末尾
共 (0) 个答案