EditText自定義下劃線與游標顏色
阿新 • • 發佈:2019-01-28
因設計的需求有時我們不得不改變EditText底線顏色,接下來我們就實現EditText改變游標及底線顏色:
一.EditText未做任何設定之間效果:
xml.layout:
<EditText android:hint="EditText未做任何設定" android:layout_width="match_parent" android:layout_height="wrap_content" /> |
二.定義游標顏色:
//設定游標顏色 android:textCursorDrawable="@drawable/solid_shape_bottom_line" //去掉游標 android:textCursorDrawable= <EditText android:id="@+id/et_classRefund" android:text="" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:textSize="@dimen/text_size_13" android:gravity="center" android:textCursorDrawable="@drawable/solid_shape_bottom_line" android:textColor= <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <size android:width="2dp" /> <solid android:color="@color/textcolor_yellow" /> </shape> 執行效果: |
三.EditText定義底線:
在Activity中做EditText焦點監聽: etClassRefund.setOnFocusChangeListener(new View.OnFocusChangeListener() { @Override public void onFocusChange(View v, boolean hasFocus) { if (hasFocus) { etClassRefund.setBackgroundResource(R.drawable.et_underline_selected); } else { etClassRefund.setBackgroundResource(R.drawable.et_underline_unselected); } } }); 效果圖: |
到這裡效果是實現了,但是我們發現activity裡面的程式碼增多了,怎麼辦???
解決:
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused="false" android:drawable="@drawable/et_underline_unselected"/> <item android:state_focused="true" android:drawable="@drawable/et_underline_selected"/> </selector> |
<EditText android:id="@+id/et_classRefund" android:text="" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="1" android:textSize="@dimen/text_size_13" android:gravity="center" android:background="@drawable/edittext_bg_selector" android:textCursorDrawable="@drawable/solid_shape_bottom_line" android:textColor="@color/text_color_333333"/> |