1 tectview、editext在物理设备不显示问题
尝试设置颜色试试
2 Editext去下划线属性
android:background="@null"
3 使用系统默认的Editext下划线太粗,需要控制其下划线高度
package com.litec.cashierscale.uitls;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.EditText;
import com.litec.cashierscale.R;
public class LineEditText extends EditText {
// 画笔 用来画下划线
private Paint paint;
private int linePosition;
// 分割线变量
private int lineColor_click,lineColor_unclick;// 点击时 & 未点击颜色
private int color;
public LineEditText(Context context, AttributeSet attrs) {
super(context, attrs);
init(context, attrs);
}
private void init(final Context context, final AttributeSet attrs) {
// 获取控件资源
TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.SuperEditText);
linePosition = typedArray.getInteger(R.styleable.SuperEditText_linePosition, 1);
// 1. 设置画笔
paint = new Paint();
paint.setStrokeWidth(2.0f); // 分割线粗细
// 2. 设置分割线颜色(使用十六进制代码,如#333、#8e8e8e)
int lineColorClick_default = context.getResources().getColor(R.color.tv_selected); // 默认 = 蓝色#1296db
int lineColorunClick_default = context.getResources().getColor(R.color.hint_color); // 默认 = 灰色#9b9b9b
lineColor_click = typedArray.getColor(R.styleable.SuperEditText_lineColor_click, lineColorClick_default);
lineColor_unclick = typedArray.getColor(R.styleable.SuperEditText_lineColor_unclick, lineColorunClick_default);
color = lineColor_unclick;
// 消除自带下划线
setBackground(null);
}
/**
* 关注1
* 作用:判断是否显示删除图标 & 设置分割线颜色
*/
private void setDeleteIconVisible(boolean deleteVisible,boolean leftVisible) {
color = leftVisible ? lineColor_click : lineColor_unclick;
invalidate();
}
@Override
protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) {
super.onFocusChanged(focused, direction, previouslyFocusedRect);
setDeleteIconVisible(focused && length() > 0,focused);
// focused = 是否获得焦点
// 同样根据setDeleteIconVisible()判断是否要显示删除图标->>关注1
}
@Override
protected void onTextChanged(CharSequence text, int start, int lengthBefore, int lengthAfter) {
super.onTextChanged(text, start, lengthBefore, lengthAfter);
setDeleteIconVisible(hasFocus() && text.length() > 0,hasFocus());
// hasFocus()返回是否获得EditTEXT的焦点,即是否选中
// setDeleteIconVisible() = 根据传入的是否选中 & 是否有输入来判断是否显示删除图标->>关注1
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
paint.setColor(color);
// setTextColor(color);
setTextColor(getResources().getColor(R.color.black_alpha60));
int x=this.getScrollX(); // 获取延伸后的长度
int w=this.getMeasuredWidth(); // 获取控件长度
canvas.drawLine(0, this.getMeasuredHeight()- linePosition, w+x,
this.getMeasuredHeight() - linePosition, paint);
}
}
引用
<com.litec.cashierscale.uitls.LineEditText
android:id="@+id/pwd_edt"
android:inputType="textPassword"
android:drawableLeft="@drawable/password_selector"
android:layout_width="226dp"
android:layout_height="wrap_content"
android:background="@color/transparent"
android:textColorHint="@color/textColorHint"
android:drawablePadding="10dp"
android:hint="@string/input_psw"
android:imeOptions="actionDone"
android:paddingBottom="@dimen/size_4dp"
android:digits="1234567890"
android:textSize="10dp"/>