EditText设置/隐藏光标位置、选中文本和获取/清除焦点

有时候需要让光标显示在EditText的指定位置或者选中某些文本。同样,为了方便用户输入以提升用户体验,可能需要使EditText获得或失去焦点。
1. 设置光标到指定位置

<ol class="linenums" style="padding: 0px 0px 0px 10px; margin: 0px;"><li value="1" class="L0" style="padding: 0px; margin: 0px 0px 0px 5px; list-style: decimal inside;"><span class="typ" style="padding: 0px; margin: 0px; color: rgb(102, 0, 102);">EditText</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> et </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="typ" style="padding: 0px; margin: 0px; color: rgb(102, 0, 102);">EditText</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> findViewById</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">R</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">id</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">etTest</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span></li><li class="L1" style="padding: 0px; margin: 0px 0px 0px 5px; list-style: decimal inside;"><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">et</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">setSelection</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="lit" style="padding: 0px; margin: 0px; color: rgb(0, 102, 102);">2</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span></li></ol>


PS:当内容过多时,可通过设置光标位置来让该位置的内容显示在屏幕上。
2. 隐藏光标

<ol class="linenums" style="padding: 0px 0px 0px 10px; margin: 0px;"><li value="1" class="L0" style="padding: 0px; margin: 0px 0px 0px 5px; list-style: decimal inside;"><span class="typ" style="padding: 0px; margin: 0px; color: rgb(102, 0, 102);">EditText</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> et </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="typ" style="padding: 0px; margin: 0px; color: rgb(102, 0, 102);">EditText</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> findViewById</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">R</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">id</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">etTest</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span></li><li class="L1" style="padding: 0px; margin: 0px 0px 0px 5px; list-style: decimal inside;"><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">//设置光标不显示,但不能设置光标颜色</span></li><li class="L2" style="padding: 0px; margin: 0px 0px 0px 5px; list-style: decimal inside;"><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">et</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">setCursorVisible</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">false</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span></li></ol>

3. 获得焦点时全选文本

<ol class="linenums" style="padding: 0px 0px 0px 10px; margin: 0px;"><li value="1" class="L0" style="padding: 0px; margin: 0px 0px 0px 5px; list-style: decimal inside;"><span class="typ" style="padding: 0px; margin: 0px; color: rgb(102, 0, 102);">EditText</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> et </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="typ" style="padding: 0px; margin: 0px; color: rgb(102, 0, 102);">EditText</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> findViewById</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">R</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">id</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">etTest</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span></li><li class="L1" style="padding: 0px; margin: 0px 0px 0px 5px; list-style: decimal inside;"><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">et</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">setSelectAllOnFocus</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">true</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span></li></ol>


PS:此方法可用来在用户点击EditText时,选中默认内容。
4. 获取和失去焦点

<ol class="linenums" style="padding: 0px 0px 0px 10px; margin: 0px;"><li value="1" class="L0" style="padding: 0px; margin: 0px 0px 0px 5px; list-style: decimal inside;"><span class="typ" style="padding: 0px; margin: 0px; color: rgb(102, 0, 102);">EditText</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> et </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="typ" style="padding: 0px; margin: 0px; color: rgb(102, 0, 102);">EditText</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> findViewById</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">R</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">id</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">etTest</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span></li><li class="L1" style="padding: 0px; margin: 0px 0px 0px 5px; list-style: decimal inside;"><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">et</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">requestFocus</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">();</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">//请求获取焦点</span></li><li class="L2" style="padding: 0px; margin: 0px 0px 0px 5px; list-style: decimal inside;"><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">et</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">clearFocus</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">();</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">//清除焦点</span></li></ol>

5. 综合运用代码

<ol class="linenums" style="padding: 0px 0px 0px 10px; margin: 0px;"><li value="1" class="L0" style="padding: 0px; margin: 0px 0px 0px 5px; list-style: decimal inside;"><span class="typ" style="padding: 0px; margin: 0px; color: rgb(102, 0, 102);">EditText</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> et </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="typ" style="padding: 0px; margin: 0px; color: rgb(102, 0, 102);">EditText</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">)</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> findViewById</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">R</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">id</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">etTest</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span></li><li class="L1" style="padding: 0px; margin: 0px 0px 0px 5px; list-style: decimal inside;"><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">int</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> index </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> et</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">getSelectionStart</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">();</span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">//获取光标所在位置		 </span></li><li class="L2" style="padding: 0px; margin: 0px 0px 0px 5px; list-style: decimal inside;"><span class="typ" style="padding: 0px; margin: 0px; color: rgb(102, 0, 102);">String</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> text</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="str" style="padding: 0px; margin: 0px; color: rgb(0, 136, 0);">"#请在这里输入话题#"</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">;</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span></li><li class="L3" style="padding: 0px; margin: 0px 0px 0px 5px; list-style: decimal inside;"><span class="typ" style="padding: 0px; margin: 0px; color: rgb(102, 0, 102);">Editable</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> edit </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> et</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">getEditableText</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">();</span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">//获取EditText的文字		</span></li><li class="L4" style="padding: 0px; margin: 0px 0px 0px 5px; list-style: decimal inside;"><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">if</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">index </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);"><</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="lit" style="padding: 0px; margin: 0px; color: rgb(0, 102, 102);">0</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">||</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> index </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">>=</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> edit</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">length</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">()</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">){</span></li><li class="L5" style="padding: 0px; margin: 0px 0px 0px 5px; list-style: decimal inside;"><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">    edit</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">append</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">text</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">	</span></li><li class="L6" style="padding: 0px; margin: 0px 0px 0px 5px; list-style: decimal inside;"><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">}</span><span class="kwd" style="padding: 0px; margin: 0px; color: rgb(0, 0, 136);">else</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">{</span></li><li class="L7" style="padding: 0px; margin: 0px 0px 0px 5px; list-style: decimal inside;"><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">    edit</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">insert</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">index</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">text</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span><span class="com" style="padding: 0px; margin: 0px; color: rgb(136, 0, 0);">//光标所在位置插入文字			</span></li><li class="L8" style="padding: 0px; margin: 0px 0px 0px 5px; list-style: decimal inside;"><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">}</span></li><li class="L9" style="padding: 0px; margin: 0px 0px 0px 5px; list-style: decimal inside;"><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">et</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">setSelection</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">(</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">index </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">+</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="lit" style="padding: 0px; margin: 0px; color: rgb(0, 102, 102);">1</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">,</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> index </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">+</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> text</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">.</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);">length</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">()</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">-</span><span class="pln" style="padding: 0px; margin: 0px; color: rgb(0, 0, 0);"> </span><span class="lit" style="padding: 0px; margin: 0px; color: rgb(0, 102, 102);">1</span><span class="pun" style="padding: 0px; margin: 0px; color: rgb(102, 102, 0);">);</span></li></ol>

PS:在光标处插入文本,并选中##里面的文本

整理改编自: http://orgcent.com/android-edittext-cursor-position-focus/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值