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"