TextView & EditText

时间:2023-03-09 05:45:08
TextView & EditText
TextView

1.下划线

textView.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG ); //下划线

2.单独做第一步,文字会出现锯齿,要加下面抗锯齿

textView.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG|Paint.ANTI_ALIAS_FLAG );

或者textView.getPaint().setAntiAlias(true);//抗锯齿

3.中划线

textview.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG);

4.xml文件中,android:onClick 设置无效

需要设置属性android:clickable="true"

5.This tag and its children can be replaced by one <TextView/> and a compound drawable

当我们用一个LinearLayout来实现一个ImageView和TextView在一起的时候,就会出现上面的提示。

根据提示来修改,可以使用TextView的drawableLeft等属性,代码如下

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/ic_launcher"
android:drawablePadding="4dp"
android:gravity="center"
/>

6.在代码中改drawableLeft

Drawable drawable= getResources().getDrawable(R.drawable.drawable);
/// 这一步必须要做,否则不会显示.
drawable.setBounds(0, 0, drawable.getMinimumWidth(), drawable.getMinimumHeight());
myTextview.setCompoundDrawables(drawable,null,null,null);
//也或参考另一个函数
public void setCompoundDrawablesWithIntrinsicBounds (Drawable left, Drawable top, Drawable right, Drawable bottom)
//另一个函数
public void setCompoundDrawablesWithIntrinsicBounds(int left, int top, int right, int bottom)

7.行距

android:lineSpacingExtra="3dp"

8.省略号

<!-- start,end,middle,marquee-->
android:ellipsize="end"
android:singleLine="true"

9.HTML

//注:font的size属性不起作用,如果需要改变大小,使用h1等的标签
textView.setText(Html.fromHtml("<h1><font color='#FF783F'>text</font></h1>");

10.获取行数

textview.post(new Runnable() {
@Override
public void run() {
int lineCount = textview.getLineCount();
}
});

11.android:drawablePadding

tv.setCompoundDrawablePadding(padInPx);

12.字体

android:fontFamily="sans-serif-thin"
EditText

1.android:imeOptions

该属性用于修改输入法键盘里的Enter的图标或者文字,比如值为“actionSearch”,图标为搜索的图片或者文字"Search"之类的,类似的还有"Send", "Go"等文字

2.android:inputType

该属性用于帮助输入法决定使用什么键盘,比如如果值是"textCapCharacters"时,会第一个字母大写。类似的还有"textPassword", "textEmail", "textPhonetic"

代码输入可以用editText.setInputType(EditorInfo.inputType);

默认是数字,但是可以输入其他,注意xml中不要设置inputType

et.setRawInputType(InputType.TYPE_CLASS_NUMBER);

3.光标显示最右边

editText.setSelection(text.length());

4.响应键盘事件

edittext.setOnKeyListener(new OnKeyListener() {

     @Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if(keyCode == KeyEvent.KEYCODE_ENTER && event.getAction() == KeyEvent.ACTION_DOWN){
  return true;
}
return false;
}
});

5.EditText不可编辑(android:editable已经过期)

<EditText ...
android:clickable="false"
android:cursorVisible="false"
android:focusable="false"
android:focusableInTouchMode="false">
</EditText>

代码设置

editText.setKeyListener(null);//设了就不能编辑

6.看官方demo时,发现editText有个很好的方法,setError()。可以弹出错误信息,用法如下

editText.setError(error);

7.自动换行

设置inputType会导致editText不会自动换行

8.获取焦点并弹出键盘

et.requestFocus();
et.setSelection(et.getText().toString().length());
InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.showSoftInput(et, 0); //若不会自动弹出键盘,看看AndroidManifest.xml是否有设置android:windowSoftInputMode="stateHidden"

9.最大字数

android:maxLength

10.字符串过滤

InputFilter

11.不自动获取焦点(不自动弹出键盘)

方案1
EditText的父Layout中,加入下面的两个属性即可
android:focusable="true"
android:focusableInTouchMode="true"
方案2
android:windowSoftInputMode="stateHidden"

12.插入内容到EditText光标所在位置

EditText mEditText = (EditText)findViewById(R.id.input);//EditText对象
int index = mEditText.getSelectionStart();//获取光标所在位置
String text="I want to input str";
Editable edit = mEditText.getEditableText();//获取EditText的文字
if (index < 0 || index >= edit.length() ){
edit.append(text);
}else{
edit.insert(index,text);//光标所在位置插入文字
}

13.响应imeOptions

editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView textView, int actionId, KeyEvent keyEvent) {
if(actionId == EditorInfo.IME_ACTION_GO){
//TODO
return true;
}
return false;
}
});

14, InputFilter限制EditText内容长度

editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(20)});  

15:digits:只能输入指定的字符

android:digits="abcdefg"