版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiaoyantan/article/details/70314829
- 去掉EditText的下划线
android:background="@null"
- 设置EditText的光标(可以自定义)
android:cursorVisible="true"
android:textCursorDrawable="@drawable/test_cursor"
shape文件:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<size android:width="3dp" />
<span style="font-family: Arial, Helvetica, sans-serif;"><!-- 光标宽度可以自己定义 --></span>
<solid android:color="@color/common_bg" /><!-- 光标颜色可以自己定义 -->
</shape>
- 设置EditText最小显示的行数,光标显示在顶部第一行
android:gravity="top"
android:minLines="4"
- 设置TextView的行间距和行间距倍数
android:lineSpacingExtra="4dp"
android:lineSpacingMultiplier="1.3"
- 設置TextView最多显示多少个字符,多余用省略号表示
<item name="android:ellipsize">end</item>
<item name="android:maxEms">12</item>
<item name="android:maxLines">1</item>
- 自定义属性时设置TextView的textSize通过getPaint()方法设置(这样sp转换为px时才正常)
tvText.getPaint().setTextSize(customTextSize);
- 在代码中设置EditText的最大字数
etEditCommon.setFilters(new InputFilter[]{new InputFilter.LengthFilter(len)});
- 设置EditText数字输入范围,如[0,100]
etPoints.setFilters(new InputFilter[]{new ValueRangeInputFilter(0, 100)});
ValueRangeInputFilter的代码如下:
public class ValueRangeInputFilter implements InputFilter{
private static final String TAG = "ValueRangeInputFilter";
private final int mMin, mMax;
public ValueRangeInputFilter(int min, int max) {
this.mMin = min;
this.mMax = max;
}
@Override
public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) {
try{
String originalResult = originalResultOfInputFilter(source.toString(), start, end,
dest.toString(), dstart, dend);
int input = Integer.parseInt(originalResult);
if (isInRange(input))
return null;
}catch (NumberFormatException e){
LLog.d(TAG, "numberFormatException, and e is: " + e);
}
return "";
}
public static String originalResultOfInputFilter(String source, int start, int end,
String dest, int dStart, int dEnd){
if (dStart == dest.length()) return dest + source;
if (dStart == 0) return source + dest;
String firstString = dest.substring(0, dStart);
String endString = dest.substring(dEnd);
return firstString + source + endString;
}
private boolean isInRange(int value){
return mMin <= value && value <= mMax;
}
}
- 监听EditText输入结合ButterKnife可以写成这样(方法名自己决定):
@OnTextChanged(value = R.id.et_text, callback = OnTextChanged.Callback.AFTER_TEXT_CHANGED)
public void onTextContentChanged() {
//写入你的处理
}
- 最后一个简单的工具类
public class TextUtils {
/**
* 一般用于登录注册之类的验证码显示
* @param textView
* @return
*/
public static CountDownTimer verifyCodeBtnCountDown(TextView textView) {
return new CountDownTimer(60000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
textView.setEnabled(false);
textView.setText(millisUntilFinished / 1000 + "秒后重发");
}
@Override
public void onFinish() {
textView.setEnabled(true);
textView.setText(textView.getContext().getString(R.string.reverification));
}
};
}
/**
* 如果所给content为空,则设置给定TextView为Gone,否则设置文本并且可见
* @param textView
* @param content
*/
public static void showTextOrGone(TextView textView, @Nullable String content){
if (TextUtils.isEmpty(content)){
textView.setVisibility(View.GONE);
}else{
textView.setVisibility(View.VISIBLE);
textView.setText(content);
}
}
/**
* 与上面类似
* @param textView
* @param content
*/
public static void showTextOrInVisible(TextView textView, @Nullable String content){
if (TextUtils.isEmpty(content)){
textView.setVisibility(View.INVISIBLE);
}else{
textView.setVisibility(View.VISIBLE);
textView.setText(content);
}
}
/**
* 判断给定的可变数组对象是否为空,对于多次判断,可减少很多代码
* 对象可为TextView(EditText),字符串,List集合等
* @param objs
* @return
*/
public static boolean isEmpty(Object... objs) {
boolean isEmpty = false;
for (Object obj : objs) {
if (obj instanceof String) {
if (TextUtils.isEmpty((String) obj)) {
isEmpty = true;
}
} else if (obj instanceof TextView) {
if (((TextView) obj).length() > 0) {
isEmpty = true;
}
} else if (obj instanceof List) {
if (((List) obj).isEmpty()) {
isEmpty = true;
}
}
}
return isEmpty;
}
/**
* 根据给定的字符串数组返回一个拼接的字符串,多个字符串以逗号隔开
* @param strs
* @return
*/
public static String listToString(List<String> strs) {
if (strs != null && strs.size() > 0) {
String str = "";
for (int i = 0; i < strs.size(); i++) {
if (i != 0) {
str += "," + strs.get(i);
} else {
str += strs.get(i);
}
}
return str;
}
return "";
}
/**
* 清空给定的可变TextView数组内容
* @param tvs
*/
public static void clearText(TextView... tvs){
for (TextView tv : tvs) {
tv.setText("");
}
}
/**
* 判断所给的TextView是否达到给定的最小长度
* @param minLength
* @param tvs
* @return
*/
public static boolean isLengthEnough(int minLength,TextView... tvs){
for (TextView tv : tvs) {
if(tv.length() < minLength) {
return false;
}
}
return true;
}