总结EditText,TextView使用的点点滴滴
16lz
2021-12-04
- 去掉EditText的下划线
android:background="@null"
- 设置EditText的光标(可以自定义)
android:cursorVisible="true"android:textCursorDrawable="@drawable/test_cursor"
text_cursor.xml:
<?xml version="1.0" encoding="utf-8"?>
- 设置EditText最小显示的行数,光标显示在顶部第一行
android:gravity="top"android:minLines="4"
- 设置TextView的行间距或行间距倍数
android:lineSpacingExtra="4dp" android:lineSpacingMultiplier="1.3"
- 設置TextView最多显示多少个字符,多余用省略号表示
- end
- 12
- 1
- 自定义属性时设置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 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;}
更多相关文章
- Android横竖屏总结
- android攻略
- Android中由于设置的背景图片太大导致OOM
- 【转】Android字体小结
- View有关基础
- ListView点击效果设置
- android 输入法弹出 标题栏不被顶出去
- VMware虚拟机Ubuntu1804编译Android(安卓)10.0
- Android设置Settings实现:PreferenceActivity【1】