Android仿微信實(shí)現(xiàn)評(píng)論功能
在最近做的項(xiàng)目中有碰到要寫類似朋友圈的模塊,因?yàn)橐獙?shí)現(xiàn)評(píng)論點(diǎn)贊功能,這里說下我是怎么實(shí)現(xiàn)評(píng)論功能的。
首先先放上效果圖
這里貼上我的代碼:
//給評(píng)論圖標(biāo)設(shè)置點(diǎn)擊事件 mIv_header_discuss.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showPopupcomment(); } });
showPopupcomment()方法如下
private PopupWindow popupWindow; private View popupView = null; private EditText inputComment; private String nInputContentText; private TextView btn_submit; private RelativeLayout rl_input_container; private InputMethodManager mInputManager; @SuppressLint("WrongConstant") private void showPopupcomment() { if (popupView == null){ //加載評(píng)論框的資源文件 popupView = LayoutInflater.from(context).inflate(R.layout.comment_popupwindow, null); } inputComment = (EditText) popupView.findViewById(R.id.et_discuss); btn_submit = (Button) popupView.findViewById(R.id.btn_confirm); rl_input_container = (RelativeLayout)popupView.findViewById(R.id.rl_input_container); //利用Timer這個(gè)Api設(shè)置延遲顯示軟鍵盤,這里時(shí)間為200毫秒 Timer timer = new Timer(); timer.schedule(new TimerTask() { public void run() { mInputManager = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); mInputManager.showSoftInput(inputComment, 0); } }, 200); if (popupWindow == null){ popupWindow = new PopupWindow(popupView, RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT, false); } //popupWindow的常規(guī)設(shè)置,設(shè)置點(diǎn)擊外部事件,背景色 popupWindow.setTouchable(true); popupWindow.setFocusable(true); popupWindow.setOutsideTouchable(true); popupWindow.setBackgroundDrawable(new ColorDrawable(0x00000000)); popupWindow.setTouchInterceptor(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_OUTSIDE) popupWindow.dismiss(); return false; } }); // 設(shè)置彈出窗體需要軟鍵盤,放在setSoftInputMode之前 popupWindow.setSoftInputMode(PopupWindow.INPUT_METHOD_NEEDED); // 再設(shè)置模式,和Activity的一樣,覆蓋,調(diào)整大小。 popupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); //設(shè)置popupwindow的顯示位置,這里應(yīng)該是顯示在底部,即Bottom popupWindow.showAtLocation(popupView, Gravity.BOTTOM, 0, 0); popupWindow.update(); //設(shè)置監(jiān)聽 popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() { // 在dismiss中恢復(fù)透明度 @RequiresApi(api = Build.VERSION_CODES.CUPCAKE) public void onDismiss() { mInputManager.hideSoftInputFromWindow(inputComment.getWindowToken(), 0); //強(qiáng)制隱藏鍵盤 } }); //外部點(diǎn)擊事件 rl_input_container.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mInputManager.hideSoftInputFromWindow(inputComment.getWindowToken(), 0); //強(qiáng)制隱藏鍵盤 popupWindow.dismiss(); } }); //評(píng)論框內(nèi)的發(fā)送按鈕設(shè)置點(diǎn)擊事件 btn_submit.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { nInputContentText = inputComment.getText().toString().trim(); if (nInputContentText == null || "".equals(nInputContentText)) { showToastMsgShort("請(qǐng)輸入評(píng)論內(nèi)容"); return; } mInputManager.hideSoftInputFromWindow(inputComment.getWindowToken(),0); popupWindow.dismiss(); } }); }
在剛開始顯示的時(shí)候發(fā)現(xiàn),EditText即評(píng)論框被頂?shù)狡聊蛔钌戏?,然而鍵盤顯示在底部,達(dá)不到效果。很多文章都說
popupWindow.setSoftInputMode(PopupWindow.INPUT_METHOD_NEEDED); popupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
這兩句代碼順序不能變,然而這樣寫了之后還是實(shí)現(xiàn)不了,自己摸索了半天發(fā)現(xiàn)出現(xiàn)這樣的問題與評(píng)論框的布局也有關(guān)系。
所以在這里貼上我的評(píng)論框布局
R.layout.comment_popupwindow
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rl_input_container" android:layout_width="match_parent" android:layout_height="match_parent"> <LinearLayout android:layout_width="match_parent" android:layout_height="44dp" android:background="@color/colorWhite" android:layout_alignParentBottom="true" android:orientation="horizontal"> <EditText android:id="@+id/et_discuss" android:layout_width="0dp" android:layout_weight="1" android:layout_height="38dp" android:textColorHint="#a2a2a2" android:textSize="13sp" android:layout_marginRight="7dp" android:layout_marginLeft="15dp" android:layout_marginBottom="6dp" android:layout_marginTop="6dp" android:ellipsize="end" android:background="@drawable/round_edittext_input" android:layout_gravity="center_vertical" android:paddingLeft="@dimen/ten_padding" android:paddingRight="@dimen/ten_padding" android:singleLine="true" /> <Button android:id="@+id/btn_confirm" android:text="發(fā)送" android:background="@drawable/btn_discuss_bg" android:textSize="16sp" android:layout_gravity="center_vertical" android:textColorHint="#b7b7b7" android:textColor="@color/colorWhite" android:layout_marginRight="@dimen/ten_padding" android:gravity="center" android:layout_width="40dp" android:layout_height="38dp"/> </LinearLayout> </RelativeLayout>
把評(píng)論框和發(fā)送按鈕用LinearLayout包裹,然后在最外層用一個(gè)RelativeLayout包裹住,發(fā)現(xiàn)這樣子評(píng)論框就會(huì)和軟鍵盤一起彈出來了。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android實(shí)現(xiàn)簡(jiǎn)易的鬧鐘功能
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)簡(jiǎn)易的鬧鐘功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-09-09Android實(shí)現(xiàn)兩個(gè)ScrollView互相聯(lián)動(dòng)的同步滾動(dòng)效果代碼
這篇文章主要介紹了Android實(shí)現(xiàn)兩個(gè)ScrollView互相聯(lián)動(dòng)的同步滾動(dòng)效果代碼,涉及Android操作ScrollView實(shí)現(xiàn)聯(lián)動(dòng)功能的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10Android?Studio實(shí)現(xiàn)登錄界面功能
這篇文章主要為大家詳細(xì)介紹了Android?Studio實(shí)現(xiàn)登錄界面功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04Android中解決EditText放到popupWindow中,原有復(fù)制、粘貼、全選、選擇功能失效問題
這篇文章主要介紹了Android中解決EditText放到popupWindow中,原有復(fù)制、粘貼、全選、選擇功能失效問題 的相關(guān)資料,需要的朋友可以參考下2016-04-04Android RecyclerView添加上拉加載更多功能
這篇文章主要為大家詳細(xì)介紹了Android RecyclerView如何添加上拉加載更多功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10RecyclerView實(shí)現(xiàn)抖音縱向滾動(dòng)ViewPager效果
這篇文章主要為大家詳細(xì)介紹了RecyclerView實(shí)現(xiàn)抖音縱向滾動(dòng)ViewPager效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07Android Button按鈕點(diǎn)擊背景和文字變化操作
這篇文章主要介紹了Android Button按鈕點(diǎn)擊背景和文字變化操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-08-08