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"

 

 

 

 

 

posted @ 2014-05-20 22:35  BaronZ  阅读(632)  评论(0编辑  收藏  举报