android观看直播编辑消息EditText失去焦点的问题解决方案
来源:互联网 发布:根域名 编辑:程序博客网 时间:2024/05/22 17:31
本人第一次写博客,写作不怎么好,而且不是大牛。为了记录遇到的问题和解决的方法,供自己遇到有个好的解决方案。
最近公司做一个直播APP,使用了第三方ucloud和环信,鉴于别的比较热门的直播应用。在直播和观看直播,点击EditText弹出软键盘之后,EditText无故消失。
于是排查问题,定位了到UVideoView和EditText抢焦点。然后各种上网找资料,弄了好久没弄好。
于是使用了PopWindow帮我解决了问题。
这里写代码片布局<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> <LinearLayout android:id="@+id/recyclerView" android:layout_width="0dp" android:layout_height="0dp" android:background="@color/transparent" android:orientation="vertical" android:layout_above="@+id/container_send" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:background="@color/half_white_transparent" android:padding="8dp"> <RelativeLayout android:id="@+id/switch_rl" android:layout_width="70dp" android:layout_height="38dp" android:background="@drawable/select_barrage"> <TextView android:id="@+id/switch_tv" android:layout_width="wrap_content" android:layout_height="38dp" android:background="@drawable/route_white_bg_4" android:gravity="center" android:paddingLeft="5dp" android:paddingRight="15dp" android:text="弹幕" android:textColor="@color/pink2red" android:textSize="12sp" /> </RelativeLayout> <LinearLayout android:layout_width="0dp" android:layout_height="38dp" android:layout_marginLeft="5dp" android:layout_marginRight="5dp" android:layout_weight="1" android:background="@drawable/route_white_bg_4" android:gravity="center"> <EditText android:id="@+id/input_barrage_et" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_weight="1" android:background="@color/transparent" android:hint="@string/hint_talk_with_fans" android:inputType="text" android:maxLength="20" android:paddingLeft="10dp" android:paddingRight="10dp" android:textColor="@color/text_black_color" android:textColorHint="@color/text_black_hint_color" android:textSize="@dimen/xsmall_txt" /> </LinearLayout> <TextView android:id="@+id/send_tv" android:layout_width="wrap_content" android:layout_height="38dp" android:background="@drawable/route_red_bg_4" android:gravity="center" android:paddingLeft="10dp" android:paddingRight="10dp" android:text="发送" android:textColor="@color/white2gray" android:textSize="@dimen/xsmall_txt" /> </LinearLayout></LinearLayout>/** * 自定义PopWindow * Created by macbook */public class InputPopWindow extends PopupWindow implements View.OnClickListener{ /** * 上下文 */ private Context mContext; /** * 弹幕开关 */ private TextView switchTv; /** * 弹幕布局 */ private RelativeLayout switchRl; /** * 内容编辑框 */ private EditText inputEt; /** * 发送 */ private TextView sendTv; private boolean isBarrageShow = false; private MessageViewListener messageViewListener; public void setMessageViewListener(MessageViewListener messageViewListener) { this.messageViewListener = messageViewListener; } public InputPopWindow(Context context){ this.mContext = context; initView(); } private void initView(){ View v = LayoutInflater.from(mContext).inflate(R.layout.fragment_chat_input, null); switchTv = (TextView) v.findViewById(R.id.switch_tv); switchTv.setOnClickListener(this); switchRl = (RelativeLayout) v.findViewById(R.id.switch_rl); switchRl.setOnClickListener(this); inputEt = (EditText) v.findViewById(R.id.input_barrage_et); sendTv = (TextView) v.findViewById(R.id.send_tv); sendTv.setOnClickListener(this); this.setContentView(v); ColorDrawable dw = new ColorDrawable(0xb0000000); setBackgroundDrawable(dw); setFocusable(true); setOutsideTouchable(true); this.setWidth(Utils.getScreenWidth()); this.setHeight(WindowManager.LayoutParams.WRAP_CONTENT); } public void showPopupWindow(View parent) { if (this.isShowing()) { this.dismiss(); return; } showInputMethodManager(); this.showAtLocation(parent, Gravity.BOTTOM, 0, 0); } private void showInputMethodManager(){ inputEt.setFocusable(true); inputEt.setFocusableInTouchMode(true); inputEt.requestFocus(); Timer timer = new Timer(); timer.schedule(new TimerTask() { public void run(){ InputMethodManager inputManager = (InputMethodManager) inputEt.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.showSoftInput(inputEt, 0); } },200); } @Override public void dismiss() { KeyboardUtils.hideSoftInput(inputEt); super.dismiss(); inputEt.setText(""); if(messageViewListener != null){ messageViewListener.onHiderBottomBar(); } } public interface MessageViewListener { void onMessageSend(String content,boolean isBarrage); void onHiderBottomBar(); }}调用方法 private InputPopWindow inputPopWindow; public void showInputPopWindow(Context context, View view,InputPopWindow.MessageViewListener messageViewListener){ if(inputPopWindow == null){ inputPopWindow = new InputPopWindow(context); } inputPopWindow.setMessageViewListener(messageViewListener); inputPopWindow.showPopupWindow(view); }
阅读全文
0 0
- android观看直播编辑消息EditText失去焦点的问题解决方案
- Android笔记:EditText失去焦点的捕捉
- Android如何EditText失去焦点
- 【Android】EditText获得焦点以及失去焦点
- Android EditText获取焦点失去焦点监听
- EditText失去焦点的监听
- android 解决EditText无法失去焦点和失去焦点后隐藏软键盘的问题
- EditText的clearFocus() :让EditText失去焦点
- EditText的clearFocus() :让EditText失去焦点
- android EditText失去焦点可以干的事情(1)
- android EditText失去焦点可以干的事情(2)
- Android EditText得到和失去焦点、内容变化的监听
- 完美解决Android的EditText因回车键失去焦点问题
- android EditText 点击空白失去焦点
- Android 让EditText输入框失去焦点
- Android如何使edittext默认失去焦点
- android listview edittext 编辑 焦点
- 使EditText失去焦点的方法
- tinyxml在linux和windows下的编译及使用详解
- DNA Sequence POJ
- 2017.08.17工作日记
- Numpy自定义dtype的一个使用误区
- [shell]获取系统时间
- android观看直播编辑消息EditText失去焦点的问题解决方案
- Python -- 三元表达式(三目运算符)
- Yii2.0 面包屑部件配置
- jenkins Error performing command: git ls-remote -h
- 使用spring的jdbcTemplate
- Crontab使用日志
- minetest源码解析六:Client与Server数据传递(Client端)
- HBase的基础与搭建
- vue.js在windows本地下搭建环境和创建项目