Android基础之TextView、EditText常用属性
-
设置TextView单行显示
android:layout_width="wrap_content"
android:ellipsize="end"
android:singleLine="true"
android:maxEms="10"
android:ellipsize=”start”—–省略号显示在开头 “…pedia”
android:ellipsize=”end”——省略号显示在结尾 “encyc…”
android:ellipsize=”middle”—-省略号显示在中间 “en…dia”
android:ellipsize=”marquee”–以横向滚动方式显示(需获得当前焦点时) -
设置字体加粗
mTextView.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));
-
设置下划线
mTextView.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); //下划线
mTextView.getPaint().setAntiAlias(true);//抗锯齿
-
EditText输入框监听
TextWatcher textWatcher = new TextWatcher() {
// 输入文本之前的状态
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
// 输入文本中的状态
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
// 输入文本之后的状态
@Override
public void afterTextChanged(Editable s) {
}
};
- 设置editview不可编辑
//第一种:
//设置不可编辑
editView.setFocusable(false);
editView.setFocusableInTouchMode(false);
//设置可以编辑
editView.setFocusableInTouchMode(true);
editView.setFocusable(true);
editView.requestFocus();
//第二种:
//设置不可编辑
editView.setInputType(InputType.TYPE_NULL); //禁止软键盘
//设置可以编辑
editView.setInputType(InputType.TYPE_CLASS_TEXT);//开启软键盘
//第三种:
//设置不可编辑
editView.setKeyListener(null);
- 点击其他地方收起软件盘
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
if (ev.getAction() == MotionEvent.ACTION_DOWN) {
View view = getCurrentFocus();
if (isShouldHideKeyboard(view, ev)) {
hideKeyboard(view.getWindowToken());
}
}
return super.dispatchTouchEvent(ev);
}
/**
* 根据EditText所在坐标和用户点击的坐标相对比,来判断是否隐藏键盘,因为当用户点击EditText时则不能隐藏
*
* @param view
* @param event
* @return
*/
private boolean isShouldHideKeyboard(View view, MotionEvent event) {
if (view!= null && (view instanceof EditText)) {
int[] l = {0, 0};
view.getLocationInWindow(l);
int left = l[0],
top = l[1],
bottom = top + view.getHeight(),
right = left + view.getWidth();
if (event.getX() > left && event.getX() < right
&& event.getY() > top && event.getY() < bottom) {
// 点击EditText的事件,忽略它。
return false;
} else {
return true;
}
}
return false;
}
/**
* 获取InputMethodManager,隐藏软键盘
* @param token
*/
private void hideKeyboard(IBinder token) {
if (token != null) {
InputMethodManager im = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(token, InputMethodManager.HIDE_NOT_ALWAYS);
}
}
PS:参考文献
https://blog.csdn.net/ITYDXTOCATTLE/article/details/51003382
https://blog.csdn.net/Amanduzhuojiang/article/details/76266186