国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

Android仿微信實(shí)現(xiàn)評(píng)論功能

2019-12-12 00:26:19
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

在最近做的項(xiàng)目中有碰到要寫類似朋友圈的模塊,因?yàn)橐獙?shí)現(xiàn)評(píng)論點(diǎn)贊功能,這里說(shuō)下我是怎么實(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)聽(tīng) 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();  } }); }

在剛開(kāi)始顯示的時(shí)候發(fā)現(xiàn),EditText即評(píng)論框被頂?shù)狡聊蛔钌戏?,然而鍵盤顯示在底部,達(dá)不到效果。很多文章都說(shuō)

popupWindow.setSoftInputMode(PopupWindow.INPUT_METHOD_NEEDED);popupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

這兩句代碼順序不能變,然而這樣寫了之后還是實(shí)現(xiàn)不了,自己摸索了半天發(fā)現(xiàn)出現(xiàn)這樣的問(wè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ì)和軟鍵盤一起彈出來(lái)了。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 石门县| 郴州市| 西藏| 六安市| 安仁县| 巴南区| 绥滨县| 安福县| 英吉沙县| 阳泉市| 新沂市| 徐州市| 松江区| 金坛市| 石河子市| 视频| 宁强县| 郑州市| 兴隆县| 永善县| 兰溪市| 佛坪县| 巴林左旗| 建平县| 富川| 靖安县| 泸西县| 拜泉县| 英德市| 中阳县| 仪征市| 丰顺县| 镇原县| 成安县| 盘山县| 天镇县| 德令哈市| 长沙市| 东乡县| 申扎县| 安徽省|