EditText优化

  1. 光标设置

    如果EditText设置的高度比较大,光标默认会显示在居中的坐标,需要设置android:gravity=”top”。
    如果光标太贴近边框,只需设置android:paddingLeft即可。

  2. 多行输入

    在多行输入后光标会水平往右滚动,为了保持换行输入的习惯,还要设置

     android:inputType="textMultiLine"
     android:singleLine="false"
     android:scrollHorizontally="false"    

    为了直观显示,可以设置

     android:scrollbars="vertical"
     android:scrollbarStyle="insideInset"

    但输入框满了后,如果继续输入,EditText会不断增加高度,这样会隐藏上面的控件,最好设置 android:minLines和 android:maxLines确认最大最小行数。

  3. 软键盘遮挡
    可以在AndroidManifext.xml中设置Activity的软键盘:

     android:windowSoftInputMode="adjustPan"

    最后为了软键盘不挡住下方控件,最好还是全部添加一个scrollView。

    为了防止ScorllView和EditText(TextView)的滚动相冲突:
    除了在xml中设置editText:

     android:scrollbars="vertical"

    还需要在代码中设置:

     textViewExtras.setOnTouchListener(new View.OnTouchListener() {
         @Override
         public boolean onTouch(View v, MotionEvent event) {
             textViewExtras.getParent().requestDisallowInterceptTouchEvent(true);
             return false;
         }
     });
     textViewExtras.setMovementMethod(ScrollingMovementMethod.getInstance());
    1. 中划线 : textview.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG );
    2. 底部横线: textview.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG )
  4. 设置android:imeOptions属性时,有可能会失效.只需要再设置android:singleLine为true或者设置android:inputType为text,就可以修复~

  5. 设置setOnEditorActionListener()在键盘控制模拟器时会失效(检测不到回车键), 所以还是建议使用setOnKeyListener().

  1. EditText支持长按复制,TextView也可以通过android:textIsSelectable="true"来设置.