在项目中使用EditText的时候,进去设置获取焦点,是有光标显示。
可有时候我们的项目并不只有一个EditText所以会有第二第三个EditText获取焦点。
然而在项目实际开发的时候发现了,除了第一次进入后有焦点显示光标外,再点击别的EditText监听到有焦点了,但是光标没显示了。
网上找了一圈,也就三种设置方法,试了一圈没用。下面也贴一下吧,都是网上复制过来的。也许下次项目前三个设置下有显示光标,就不用折腾后面的方法了。
可以说,下面这几个方法设置了都没用
1.在Edittext中加入以下属性

android:cursorVisible=”true”
android:textCursorDrawable=”@null”

2.在Edittext中加入以下属性

android:cursorVisible=”true”
android:textCursorDrawable=”@drawable/test_cursor”

对应的drawable文件

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle"><size android:width="1dp" /><span style="font-family: Arial, Helvetica, sans-serif;"><!-- 光标宽度可以自己定义 --></span><solid android:color="#008000" /><!-- 光标颜色可以自己定义 -->
</shape>

3.如果以上没有效果就请用这个

明确指定EditText的inputType属性值inputType属性中的textCapSentences
不要用这个,国内手机好像没有用到这个,个人证实而已,用text或者textMultiLine

android:inputType=”text|textMultiLine”

4.代码里设置显示光标

在请求出现光标是,也就是在获取焦点时:
editText.requestFocus();
清除光标,也就是失去焦点:
editText.clearFocus();

另外还有:
使光标移动到指定的位置:
editText.setSelection(2);
输入的参数是个整数
让EditText不出现光标:
editText.setCursorVisible(false);
获取焦点
editText.requestFocus();
虽然上面几个没用,但也贴出来吧。以后说不定用得着呢。

下面就是解决方法了,有时候还是谷歌靠谱。直接英文搜索,就有了。不过本人英文太差,也看下一懂半懂,只要关注一些关键英文就行了。

// 焦点监听
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() {@Overridepublic void onFocusChange(View v, boolean hasFocus) {if (hasFocus) {// 这里是关键代码了editText.setTextIsSelectable(true);PhoneUtils.showKeyBoard(SendAlbumActivity.this,editText);}}});还有一个显示输入法的,也一起贴出来吧
/*** 显示软键盘*/
public static void showKeyBoard(Context context,View view){if (context == null) return;InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);imm.showSoftInput(view,InputMethodManager.SHOW_FORCED);
}

上面那个设置是从谷歌上找到的,抱着试下的心态添加了代码,
方法的意思是设置文本是可选的(谷歌翻译过来的)。点击进去看了

TextView 源码中的方法
/*** Sets whether the content of this view is selectable by the user. The default is* {@code false}, meaning that the content is not selectable.* <p>* When you use a TextView to display a useful piece of information to the user (such as a* contact's address), make it selectable, so that the user can select and copy its* content. You can also use set the XML attribute* {@link android.R.styleable#TextView_textIsSelectable} to "true".* <p>* When you call this method to set the value of {@code textIsSelectable}, it sets* the flags {@code focusable}, {@code focusableInTouchMode}, {@code clickable},* and {@code longClickable} to the same value. These flags correspond to the attributes* {@link android.R.styleable#View_focusable android:focusable},* {@link android.R.styleable#View_focusableInTouchMode android:focusableInTouchMode},* {@link android.R.styleable#View_clickable android:clickable}, and* {@link android.R.styleable#View_longClickable android:longClickable}. To restore any of these* flags to a state you had set previously, call one or more of the following methods:* {@link #setFocusable(boolean) setFocusable()},* {@link #setFocusableInTouchMode(boolean) setFocusableInTouchMode()},* {@link #setClickable(boolean) setClickable()} or* {@link #setLongClickable(boolean) setLongClickable()}.** @param selectable Whether the content of this TextView should be selectable.*/public void setTextIsSelectable(boolean selectable) {if (!selectable && mEditor == null) return; // false is default value with no edit datacreateEditorIfNeeded();if (mEditor.mTextIsSelectable == selectable) return;mEditor.mTextIsSelectable = selectable;setFocusableInTouchMode(selectable);setFocusable(selectable);setClickable(selectable);setLongClickable(selectable);// mInputType should already be EditorInfo.TYPE_NULL and mInput should be nullsetMovementMethod(selectable ? ArrowKeyMovementMethod.getInstance() : null);setText(mText, selectable ? BufferType.SPANNABLE : BufferType.NORMAL);// Called by setText above, but safer in case of future code changesmEditor.prepareCursorControllers();}

大概意思是该View的内容是否可由用户选择,默认为是
如果为false 表示内容不可选。
其实上面说啥我也不懂,英文好的同学可以看下,关键的是方法里面调用的那几个方法。看到名称大概就懂了。

上面设置之后,发现点击光标是有了。然而输入法没有显示。这里也偷懒了,既然没显示那我就调用下显示输入法就行了。

上面只当是个记录吧。希望下次再遇到这种问题可以有个找的地方。

Android EditText 获得焦点不显示光标相关推荐

  1. Android EditText获取焦点后只显示光标不弹出软键盘

    Android EditText获取焦点后只显示光标不弹出软键盘 参考博客链接 直接说结论 如果你项目适配的最小版本大于等于21 //直接调用EditText的该方法,设置为false即可 bindi ...

  2. android setinputtype光标,Android屏蔽软键盘并且显示光标的实例详解

    Android屏蔽软键盘并且显示光标的实例详解 如果是android4.0以下,那么 editText.setInputType(InputType.TYPE_NULL); 就够了,android4. ...

  3. android EditText取消焦点且退出软键盘

    android EditText取消焦点且退出软键盘 最近发现,如果在一个activity中直接加入EditText的话,每次打开这个activity的时候,就会自动打开软键盘,并且点哪里都取消不了. ...

  4. android edittext失去焦点,Android 点击EditText外部区域失去焦点的方法

    可能大家都遇到多个输入框,当某个输入框有焦点时,光标显示.当我们点击输入框以外的地方.使输入框焦点消失,隐藏键  盘. //使editText点击外部时候失去焦点 @Override public b ...

  5. Android EditText取消焦点并关闭输入法

    我们在平常的编程中,经常会有利用EditText输入信息的情况. 但是当输入完成后,我们点击别的控件完成此次输入时.焦点往往还在EditText中,并且输入法也还显示在桌面. 利用以下代码,可以取消E ...

  6. android 光标居右,Android EditText内容右对齐,光标位于hint之后

    打算写篇文章记录之前遇到的一个需求,如题.还特意写个demo运行一下,尴尬的是:只是在布局设置了android:gravity="center_vertical|end",就达到之 ...

  7. Android studio 4.1 不显示光标当前的类名、方法名

    解决方法: 1.只让当前页面显示 结果如下: 2.修改设置,所有打开的文件都显示 打开setting 搜索 breadcrumbs

  8. edittext 选中焦点在最后_安卓开发中EditText的焦点改变处理(获取焦点和失去焦点交互变化)...

    在安卓项目开发中,我们经常会遇到一些对EditText的处理问题,包括对EditText的焦点的改变,我们需要结合实际情况对其进行获得焦点,打开输入法和失去焦点,关闭输入法的交互操作. 我在这里介绍一 ...

  9. Android EditText的光标的显示与隐藏

    编辑框的光标 隐藏的方法: editText.setCursorVisible(false); 编辑框的光标 显示的方法: editText.setCursorVisible(true); 加入现在希 ...

  10. Android中EditText输入框焦点从文字前面变成文字后面

    Android中一个EditText,通过代码已经设置了默认的值为字符串0了: ? 1 2 etxtSingleAddress = (EditText)findViewById(R.id.pollin ...

最新文章

  1. @data注解_聊一下@Conditional注解系列的作用
  2. Flink中的状态与容错
  3. servlet的一些简单理解
  4. 如何使用Java 8流快速替换列表中的元素
  5. Spark Executor解析
  6. Linux使用tcpdump抓获取WIFI包
  7. python3.6安装步骤-详解win7下python3.6安装配置方法步骤
  8. C# 根据url获取文件流流
  9. Flutter — 实现验证码倒计时功能
  10. Linux 设备驱动的固件加载-转载
  11. W3Cschool菜鸟教程离线版下载链接
  12. Linux中更换软件源以及更新软件过程中报错的解决方法
  13. 最简单的Tomcat9下载安装教程
  14. 避免幻读 : next-key锁与MVCC
  15. ES文件浏览器曝严重漏洞,或影响数亿Android用户
  16. AutoCad 新建或打开对话框 经常变为命令提示行的解决办法!
  17. 【无标题】西门子smart触摸屏连接1200PLC
  18. Java简介与JDK安装
  19. codeforces 333B - Chips
  20. 高速高精度直线电机模组运输存放及安装维护的注意事项

热门文章

  1. 麦吉尔 计算机科学学分,麦吉尔大学计算机
  2. 计算机网络4小时速成:应用层,cs模型,p2p模型,DNS域名系统,文件传输协议FTP,电子邮件SMTP,万维网HTTP,动态主机配置协议DHCP
  3. 常见几种校验方法(CS和校验、CRC16、CRC32、BCC异或校验)
  4. take their time用法
  5. 科技牛人:“别人家的孩子”牛在哪里!
  6. destoon网站mysql分表_destoon 数据库操作
  7. 如何计算机内存的品牌,如何检查计算机内存模块的品牌?如何检查计算机的内存...
  8. adb 查看屏幕大小_Android adb获取屏幕分辨率
  9. qt 获取屏幕分辨率
  10. 生成随机数字字母组合参数