这两种修改光标样式的方法各有优缺点,我会在后面说明。建议使用第一种
1、布局文件中修改Edittext光标样式(常用)
drawable下,创建光标样式文件:edittext_cursor_style
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<size android:width="1dp" />
<solid android:color="#f5c2c5" />
</shape>
在Edittext中引用即可
<EditText
android:id="@+id/edittext"
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_marginLeft="30dp"
android:layout_marginTop="50dp"
android:background="#dedede"
android:paddingLeft="3dp"
android:singleLine="true"
android:textCursorDrawable="@drawable/edittext_cursor_style"
/>
2、在代码中动态修改光标样式:如,一开始光标是A颜色,在点击Edittext的时候,光标颜色就要变化
效果图
选中前:
选中后:
代码:使用反射原理(最后有注意事项,需要留意)
布局文件:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#EEEED1"
android:orientation="vertical"
>
<EditText
android:id="@+id/edittext"
android:layout_width="200dp"
android:layout_height="40dp"
android:layout_marginLeft="30dp"
android:layout_marginTop="50dp"
android:background="#dedede"
android:paddingLeft="3dp"
android:singleLine="true"
android:textCursorDrawable="@drawable/edittext_cursor_style"
/>
</LinearLayout>
Activity:
package com.chen.customviewdemo;
import android.app.Activity;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.InputType;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import java.lang.reflect.Field;
/**
* 动态变换Edittext的光标颜色
*/
public class MainActivity_11 extends Activity {
private EditText et;
@Override