赞
踩
因设计的需求有时我们不得不改变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="@null" <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="@color/text_color_333333"/> <?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> 运行效果: |
在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"/> |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。