首先上布局
<include
android:id="@+id/include"
layout="@layout/feedbacktitle"></include>
<RelativeLayout
android:layout_below="@id/include"
android:id="@+id/move_root"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.scwang.smartrefresh.layout.SmartRefreshLayout
android:layout_alignParentTop="true"
android:layout_above="@id/rl_input"
android:id="@+id/srl_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
app:srlEnableAutoLoadMore="true">
<com.scwang.smartrefresh.layout.header.ClassicsHeader
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:srlTextPulling="@string/down"
app:srlTextRelease="@string/Release" />
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/include"
android:layout_marginLeft="25dp"
android:layout_marginRight="25dp" />
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
<RelativeLayout
android:layout_alignParentBottom="true"
android:id="@+id/rl_input"
android:layout_width="match_parent"
android:layout_height="60dp"
android:paddingBottom="12dp">
<TextView
android:id="@+id/tv_send"
android:layout_width="50dp"
android:layout_height="35dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:layout_marginRight="25dp"
android:background="@drawable/send_bg"
android:gravity="center"
android:text="发送"
android:textColor="#ffffffff"
android:textSize="13sp" />
<ImageView
android:id="@+id/iv_photo"
android:layout_width="25dp"
android:layout_height="25dp"
android:layout_alignTop="@id/tv_send"
android:layout_alignParentBottom="true"
android:layout_marginLeft="19dp"
android:src="@mipmap/photo" />
<EditText
android:id="@+id/et_input"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="15dp"
android:layout_toLeftOf="@id/tv_send"
android:layout_toRightOf="@+id/iv_photo"
android:background="@drawable/et_bg"
android:hint="点击输入回复内容"
android:paddingLeft="5dp"
android:paddingTop="10dp"
android:paddingBottom="10dp"
android:textColor="#ffa5a5a5"
android:textSize="13sp" />
</RelativeLayout>
</RelativeLayout>
java代码
View move_root;
View rl_input;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// full screen
//全屏
this.getWindow().setFlags(
WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
move_root= findViewById(R.id.move_root);
rl_input= findViewById(R.id.rl_input);
addSoftKeyBoardListener(move_root,rl_input);
}
private ViewTreeObserver.OnGlobalLayoutListener mSoftKeyBoardListener;
private class SoftKeyBoardListener implements ViewTreeObserver.OnGlobalLayoutListener {
private View root;
private View view;
int lastHeight = 0;
int lastBottom = -1;
SoftKeyBoardListener(View r,View v) {
root = r;
view = v;
}
@Override
public void onGlobalLayout() {
Rect rect = new Rect();
root.getWindowVisibleDisplayFrame(rect);
if (lastBottom == -1) {
lastBottom = rect.bottom;
return;
}
int nb = rect.bottom;
int ob = lastBottom;
if (nb < ob) {
// 键盘显示了, 滑上去
int[] location = new int[2];
view.getLocationInWindow(location);
int scrollHeight = (location[1] + view.getHeight()) - nb;
root.scrollTo(0, scrollHeight);
lastHeight = scrollHeight;
}
else if (nb > ob) {
// 键盘隐藏了, 滑下来
root.scrollTo(0, 0);
}
if (nb != ob) {
lastBottom = nb;
}
}
}
public void removeSoftKeyBoardListener(@NonNull View root) {
if(mSoftKeyBoardListener != null){
root.getViewTreeObserver().removeOnGlobalLayoutListener(mSoftKeyBoardListener);
}
}
public void addSoftKeyBoardListener(final View root, final View view) {
mSoftKeyBoardListener = new SoftKeyBoardListener(root,view);
root.getViewTreeObserver().addOnGlobalLayoutListener(mSoftKeyBoardListener);
}
@Override
protected void onDestroy() {
super.onDestroy();
removeSoftKeyBoardListener(move_root);
}