一手遮天 Android - view(文本类): EditText 选中和光标
一手遮天 Android - view(文本类): EditText 选中和光标
示例如下:
/view/text/EditTextDemo2.java
/**
* EditText - 文本编辑控件(继承自 TextView)
*
* 演示 EditText 的选中和光标相关的知识点(获取焦点后自动选中全部内容,选中指定位置的内容,获取选中内容或光标的位置,设置光标的位置,隐藏光标,指定光标样式)
*/
package com.webabcd.androiddemo.view.text;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.webabcd.androiddemo.R;
public class EditTextDemo2 extends AppCompatActivity {
private EditText _editText1;
private EditText _editText2;
private EditText _editText3;
private EditText _editText4;
private Button _button1;
private Button _button2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_text_edittextdemo2);
_editText1 = (EditText) findViewById(R.id.editText1);
_editText2 = (EditText) findViewById(R.id.editText2);
_editText3 = (EditText) findViewById(R.id.editText3);
_editText4 = (EditText) findViewById(R.id.editText4);
_button1 = (Button) findViewById(R.id.button1);
_button2 = (Button) findViewById(R.id.button2);
sample();
}
private void sample() {
_editText1.setText("我是 EditText,我继承自 TextView");
_editText2.setText("我是 EditText,我继承自 TextView");
_editText3.setText("我是 EditText,我继承自 TextView");
_editText4.setText("我是 EditText,我继承自 TextView");
// 获取到焦点后自动选中全部内容
_editText1.setSelectAllOnFocus(true);
// 获取焦点
_editText2.requestFocus();
// 失去焦点
// _editText2.clearFocus();
// 选中指定位置的文本
_editText2.setSelection(3,11);
// 获取光标的位置
_button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 选中文本的起始位置(如果没有选中文本,则为当前光标所在位置)
int selectionStart = _editText2.getSelectionStart();
// 选中文本的结束位置(如果没有选中文本,则为当前光标所在位置)
int selectionEnd = _editText2.getSelectionEnd();
Toast.makeText(EditTextDemo2.this, String.format("selectionStart:%d, selectionEnd:%d", selectionStart, selectionEnd), Toast.LENGTH_SHORT).show();
}
});
// 设置光标的位置
_button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 将光标定位到文本的末尾
_editText2.setSelection(_editText2.getText().length());
}
});
// 隐藏光标
_editText3.setCursorVisible(false);
}
}
/layout/activity_view_text_edittextdemo2.xml
<?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="match_parent"
android:orientation="vertical">
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<EditText
android:id="@+id/editText2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="获取光标的位置"/>
<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="设置光标的位置"/>
<EditText
android:id="@+id/editText3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp" />
<!--
textCursorDrawable - 指定光标的样式
-->
<EditText
android:id="@+id/editText4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:textCursorDrawable="@drawable/shape_edittext_cursor"/>
</LinearLayout>