瀏覽代碼

修改bug

Pq 3 年之前
父節點
當前提交
71b761c8da

+ 77 - 0
BaseLibrary/src/main/java/com/cooleshow/base/utils/SoftHideKeyBoardUtil.java

@@ -0,0 +1,77 @@
+package com.cooleshow.base.utils;
+
+import android.app.Activity;
+import android.graphics.Rect;
+import android.os.Build;
+import android.view.View;
+import android.view.ViewTreeObserver;
+import android.widget.FrameLayout;
+
+/**
+ * Author by pq, Date on 2022/7/7.
+ */
+public class SoftHideKeyBoardUtil {
+    public static void assistActivity (Activity activity) {
+        new SoftHideKeyBoardUtil(activity);
+    }
+    private View mChildOfContent;
+    private int usableHeightPrevious;
+    private FrameLayout.LayoutParams frameLayoutParams;
+    //为适应华为小米等手机键盘上方出现黑条或不适配
+    private int contentHeight;//获取setContentView本来view的高度
+    private boolean isfirst = true;//只用获取一次
+    private  int statusBarHeight;//状态栏高度
+    private SoftHideKeyBoardUtil(Activity activity) {
+        //1、找到Activity的最外层布局控件,它其实是一个DecorView,它所用的控件就是FrameLayout
+        FrameLayout content = (FrameLayout) activity.findViewById(android.R.id.content);
+        //2、获取到setContentView放进去的View
+        mChildOfContent = content.getChildAt(0);
+        //3、给Activity的xml布局设置View树监听,当布局有变化,如键盘弹出或收起时,都会回调此监听
+        mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
+            //4、软键盘弹起会使GlobalLayout发生变化
+            public void onGlobalLayout() {
+                if (isfirst) {
+                    contentHeight = mChildOfContent.getHeight();//兼容华为等机型
+                    isfirst = false;
+                }
+                //5、当前布局发生变化时,对Activity的xml布局进行重绘
+                possiblyResizeChildOfContent();
+            }
+        });
+        //6、获取到Activity的xml布局的放置参数
+        frameLayoutParams = (FrameLayout.LayoutParams) mChildOfContent.getLayoutParams();
+    }
+
+    // 获取界面可用高度,如果软键盘弹起后,Activity的xml布局可用高度需要减去键盘高度
+    private void possiblyResizeChildOfContent() {
+        //1、获取当前界面可用高度,键盘弹起后,当前界面可用布局会减少键盘的高度
+        int usableHeightNow = computeUsableHeight();
+        //2、如果当前可用高度和原始值不一样
+        if (usableHeightNow != usableHeightPrevious) {
+            //3、获取Activity中xml中布局在当前界面显示的高度
+            int usableHeightSansKeyboard = mChildOfContent.getRootView().getHeight();
+            //4、Activity中xml布局的高度-当前可用高度
+            int heightDifference = usableHeightSansKeyboard - usableHeightNow;
+            //5、高度差大于屏幕1/4时,说明键盘弹出
+            if (heightDifference > (usableHeightSansKeyboard/4)) {
+                // 6、键盘弹出了,Activity的xml布局高度应当减去键盘高度
+                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){
+                    frameLayoutParams.height = usableHeightSansKeyboard - heightDifference + statusBarHeight;
+                } else {
+                    frameLayoutParams.height = usableHeightSansKeyboard - heightDifference;
+                }
+            } else {
+                frameLayoutParams.height = contentHeight;
+            }
+            //7、 重绘Activity的xml布局
+            mChildOfContent.requestLayout();
+            usableHeightPrevious = usableHeightNow;
+        }
+    }
+    private int computeUsableHeight() {
+        Rect r = new Rect();
+        mChildOfContent.getWindowVisibleDisplayFrame(r);
+        // 全屏模式下:直接返回r.bottom,r.top其实是状态栏的高度
+        return (r.bottom - r.top);
+    }
+}

+ 12 - 2
rong_im/common_im_ui/src/main/java/com/common/im/ui/contact/ContactPersonListFragment.java

@@ -16,6 +16,7 @@ import com.common.im.presenter.ContactListPresenter;
 import com.common.im_ui.R;
 import com.common.im_ui.databinding.FragmentContactListLayoutBinding;
 import com.cooleshow.base.utils.SizeUtils;
+import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.widgets.EmptyViewLayout;
 import com.cooleshow.base.ui.fragment.BaseMVPFragment;
 import com.mcxtzhang.indexlib.suspension.SuspensionDecoration;
@@ -59,7 +60,7 @@ public class ContactPersonListFragment extends BaseMVPFragment<FragmentContactLi
 
     @Override
     protected void initView(View rootView) {
-        mViewBinding.viewSearchBg.setOnClickListener(this);
+        mViewBinding.tvSearch.setOnClickListener(this);
         mListAdapter = new ContactListAdapter(R.layout.item_contact_list_layout);
         LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
         mViewBinding.recyclerView.setLayoutManager(layoutManager);
@@ -136,7 +137,16 @@ public class ContactPersonListFragment extends BaseMVPFragment<FragmentContactLi
 
     @Override
     public void onClick(View v) {
-        if (v.getId() == R.id.view_search_bg) {
+        if (v.getId() == R.id.tv_search) {
+            String targetSearchStr = mViewBinding.etTargetName.getText().toString().trim();
+            if (TextUtils.isEmpty(targetSearchStr)) {
+                ToastUtil.getInstance().showShort("请输入学员名称");
+                return;
+            }
+            searchCondition = targetSearchStr;
+            if (presenter != null) {
+                presenter.queryFriendList(getContext(), searchCondition);
+            }
         }
     }
 }

+ 17 - 7
rong_im/common_im_ui/src/main/java/com/common/im/ui/contact/ContactRoomListFragment.java

@@ -24,6 +24,7 @@ import com.common.im_ui.databinding.FragmentContactListLayoutBinding;
 import com.common.im_ui.databinding.FragmentContactRoomListBinding;
 import com.cooleshow.base.ui.fragment.BaseMVPFragment;
 import com.cooleshow.base.utils.SizeUtils;
+import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.widgets.EmptyViewLayout;
 import com.mcxtzhang.indexlib.suspension.SuspensionDecoration;
 import com.scwang.smart.refresh.layout.api.RefreshLayout;
@@ -66,7 +67,7 @@ public class ContactRoomListFragment extends BaseMVPFragment<FragmentContactRoom
 
     @Override
     protected void initView(View rootView) {
-        mViewBinding.viewSearchBg.setOnClickListener(this);
+        mViewBinding.tvSearch.setOnClickListener(this);
         mListAdapter = new ContactRoomListAdapter(R.layout.item_contact_list_layout);
         LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
         mViewBinding.recyclerView.setLayoutManager(layoutManager);
@@ -75,19 +76,19 @@ public class ContactRoomListFragment extends BaseMVPFragment<FragmentContactRoom
             @Override
             public void onItemClick(@NonNull BaseQuickAdapter<?, ?> adapter, @NonNull View view, int position) {
                 ContactRoomListBean item = (ContactRoomListBean) adapter.getItem(position);
-                goChat( item.getId() + "",item.getName());
+                goChat(item.getId() + "", item.getName());
             }
         });
         mViewBinding.refreshLayout.setOnRefreshListener(new OnRefreshListener() {
             @Override
             public void onRefresh(@NonNull RefreshLayout refreshLayout) {
-                presenter.queryGroupList(getContext(),searchCondition);
+                presenter.queryGroupList(getContext(), searchCondition);
             }
         });
     }
 
-    private void goChat( String targetId, String nickName) {
-        RongIM.getInstance().startGroupChat(getContext(),targetId,nickName);
+    private void goChat(String targetId, String nickName) {
+        RongIM.getInstance().startGroupChat(getContext(), targetId, nickName);
     }
 
     @Override
@@ -98,7 +99,7 @@ public class ContactRoomListFragment extends BaseMVPFragment<FragmentContactRoom
     @Override
     public void onResume() {
         super.onResume();
-        presenter.queryGroupList(getContext(),searchCondition);
+        presenter.queryGroupList(getContext(), searchCondition);
     }
 
     @Override
@@ -138,7 +139,16 @@ public class ContactRoomListFragment extends BaseMVPFragment<FragmentContactRoom
 
     @Override
     public void onClick(View v) {
-        if (v.getId() == R.id.view_search_bg) {
+        if (v.getId() == R.id.tv_search) {
+            String targetSearchStr = mViewBinding.etTargetName.getText().toString().trim();
+            if (TextUtils.isEmpty(targetSearchStr)) {
+                ToastUtil.getInstance().showShort("请输入群聊名称");
+                return;
+            }
+            searchCondition = targetSearchStr;
+            if (presenter != null) {
+                presenter.queryGroupList(getContext(), searchCondition);
+            }
         }
     }
 }

+ 2 - 2
rong_im/common_im_ui/src/main/res/layout/fragment_contact_list_layout.xml

@@ -26,14 +26,14 @@
         app:layout_constraintLeft_toLeftOf="@+id/view_search_bg"
         app:layout_constraintTop_toTopOf="@+id/view_search_bg" />
 
-    <TextView
+    <EditText
         android:id="@+id/et_target_name"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:layout_marginEnd="5dp"
         android:background="@null"
         android:ellipsize="end"
-        android:text="请输入学员名称"
+        android:hint="请输入学员名称"
         android:maxLines="1"
         android:paddingStart="8dp"
         android:textColor="@color/color_999999"

+ 2 - 2
rong_im/common_im_ui/src/main/res/layout/fragment_contact_room_list.xml

@@ -28,7 +28,7 @@
         app:layout_constraintLeft_toLeftOf="@+id/view_search_bg"
         app:layout_constraintTop_toTopOf="@+id/view_search_bg" />
 
-    <TextView
+    <EditText
         android:id="@+id/et_target_name"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
@@ -37,7 +37,7 @@
         android:ellipsize="end"
         android:maxLines="1"
         android:paddingStart="8dp"
-        android:text="请输入学员名称"
+        android:hint="请输入群聊名称"
         android:textColor="@color/color_999999"
         android:textSize="@dimen/sp_13"
         app:layout_constraintBottom_toBottomOf="@+id/view_search_bg"

+ 1 - 0
student/src/main/AndroidManifest.xml

@@ -56,6 +56,7 @@
             android:configChanges="orientation|screenSize|keyboardHidden"
             android:exported="false"
             android:launchMode="singleTask"
+            android:windowSoftInputMode="adjustPan"
             android:screenOrientation="portrait" />
 
         <activity

+ 1 - 0
teacher/src/main/AndroidManifest.xml

@@ -63,6 +63,7 @@
             android:configChanges="orientation|screenSize|keyboardHidden"
             android:exported="false"
             android:launchMode="singleTask"
+            android:windowSoftInputMode="adjustPan"
             android:screenOrientation="portrait" />
         <activity
             android:name=".ui.splash.GuideActivity"

+ 1 - 1
teacher/src/main/java/com/cooleshow/teacher/adapter/CourseTableListAdapter.kt

@@ -84,7 +84,7 @@ class CourseTableListAdapter(layoutResId: Int) :
                     tvCourseStatusBt.setVisible(false)
                 }
                 baseViewHolder.setText(R.id.tv_course_status, "未开始")
-                baseViewHolder.setTextColor(R.id.tv_course_status, com.cooleshow.base.R.color.color_ff802c)
+                baseViewHolder.setTextColor(R.id.tv_course_status, context.resources.getColor(com.cooleshow.base.R.color.color_ff802c))
                 tvCourseStatusBt.text = "调课"
                 tvCourseStatusBt.setBackgroundResource(R.drawable.shape_course_status_normal);
                 tvCourseStatusBt.setTextColor(context.resources.getColor(com.cooleshow.base.R.color.color_2dc7aa))