1、一般来说,EditText是不会顶格或者置顶输入的,文字与EditText的边框有一小段距离,可用padding实现:
android:paddingLeft="10dp"
android:paddingTop="10dp"
2、如果你的EditText的背景是黑色或者其他颜色的话,有可能会看不到光标,可用下面代码实现光标颜色与字体颜色一致:
android:textCursorDrawable="@null"
3、当你的EditText的高度较高的时候,比如说200dp,你会发现,你输入的文字在EditText的中间而不是顶部,设置gravity可达到输入文字位置的控制:
android:gravity="left|top"
4、EditText内部输入时隐藏的文字可用hint设置,如果不是纯文字,而是文字与图片结合成的hint,有一种比较简单的方法,就是用相对布局包裹EditText,然后在EditText上下一个布局,就是你需要的hint的布局,在Activity中,设置EditText得到焦点的时候,hint布局隐藏,失去焦点的时候,如果EditText里面没有文本,则显示该布局,如果已经有文本了,则隐藏改布局:
private void et_hint() {
main_report_et_notes.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
// hasFocus 为true时表示editText控件得到焦点
if (hasFocus) {
main_report_tv_ivandtv.setVisibility(View.GONE);
}
}
});
}
EditText失去焦点的事件,可以设置为点击Activity的父布局的时候,EditText就失去焦点,需要注意的是,如果你的父布局只有一页,那你则可以直接设置父布局的点击事件即可,如果父布局里面嵌套有ScrollView,则设置父布局的点击事件,是没效果的,要设置ScrollView的点击事件才可以,然后,失去焦点之后的操作都可以在点击事件里面完成,比如说显示hint之类的,还有,就是默认的EditText点击EditText之外的地方,输入法是不会消失的,这时候就有一种做法,就是让EditText失去焦点的时候,隐藏系统的输入法,具体操作如下:
main_report_rl_memo_father.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
//relativeLayout获取焦点
main_report_rl_memo_father.setFocusable(true);
main_report_rl_memo_father.setFocusableInTouchMode(true);
main_report_rl_memo_father.requestFocus();
//隐藏输入法
InputMethodManager imm = (InputMethodManager)
Report.this.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(main_report_rl_memo_father.getWindowToken(), 0);
//失去焦点的时候,如果EditText为空,则让为hint的布局显示
if ("".equals(main_report_et_notes.getText().toString())) {
main_report_tv_ivandtv.setVisibility(View.VISIBLE);
}
return false;
}
});
注:如果对EditText失去焦点之后没什么实例化的操作,可以将几大布局封装为一个类,然后在需要的EditText上直接调用类。
5、点击EditText输入的时候,EditText在输入法上方的实现方法,就是在Manifest上,在对应的Activity中添加这么一句话:
android:windowSoftInputMode="stateVisible|adjustResize"
6、当你的EditText有一定高度,输入文本较多的时候,如果用户想看到一开始输入的文字,则需要EditText内部可滚动,在xml中加入下面代码即可实现:
android:scrollbars="vertical"
如果EditText中嵌套了ScrollView,则需要重写一个,解决滑动冲突事件,重写ScrollView,并在xml引用重写的ScrollView即可,重写代码如下:
public class VerticalScrollview extends ScrollView {
public VerticalScrollview(Context context) {
super(context);
}
public VerticalScrollview(Context context, AttributeSet attrs) {
super(context, attrs);
}
public VerticalScrollview(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
final int action = ev.getAction();
switch (action)
{
case MotionEvent.ACTION_DOWN:
super.onTouchEvent(ev);
break;
case MotionEvent.ACTION_MOVE:
return false;
case MotionEvent.ACTION_CANCEL:
super.onTouchEvent(ev);
break;
case MotionEvent.ACTION_UP:
return false;
default:
break;
}
return false;
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
super.onTouchEvent(ev);
return true;
}
}