Android TextView 自动换行问题
关于android软键盘enter键的替换与事件监听
软件盘的界面替换只有一个属性android:imeOptions,这个属性的可以取的值有normal,actionUnspecified,actionNone,actionGo,actionSearch,actionSend,actionNext,actionDone,例如当值为actionNext时enter键外观变成一个向下箭头,而值为actionDone时enter键外观则变成了“完成”两个字。
我们也可以重写enter的事件,方法如下:
- TextView editText = new TextView(this);
- editText.setOnEditorActionListene(
- newTextView.OnEditorActionListener() {
- public boolean onEditorAction(TextView v, int actionId,
- KeyEvent event){
- if (actionId == EditorInfo.IME_ACTION_SEND)
- {
- // 在这里编写自己想要实现的功能
- }
- return false;
- }
- });
另附:拦截HOME按键
Android如何显示音标
http://marshal.easymorse.com/archives/4087
EditText设置光标颜色
android:textCursorDrawable="@null"
EditText设置光标位置问题
EditText中有一些预置文本的时候,想把光标调到最前面,一开始是使用的setSelection(0),结果发现在三星P1000上面有问题。经过研究发现需要先调用EditText.requestFocus(),再调用setSelection(0)。否则的话,在2.x的机器上有问题,但3.x上面是好着的。
EditText横屏时,弹出软件盘时不进行全屏
在使用EditText进行文本输入时,若不进行特殊的设置,使用Android自带的软键盘,该软键盘会占用整个界面,那么,如何让键盘只占用屏幕的一部分呢?
- <EditText
- android:id="@+id/text1"
- android:layout_width="150dip"
- android:layout_height="wrap_content"
- android:imeOptions="flagNoExtractUi"/>
使用android:imeOptinos可对Android自带的软键盘进行一些界面上的设置:
- android:imeOptions="flagNoExtractUi" //使软键盘不全屏显示,只占用一部分屏幕
- 同时,这个属性还能控件软键盘右下角按键的显示内容,默认情况下为回车键
- android:imeOptions="actionNone" //输入框右侧不带任何提示
- android:imeOptions="actionGo" //右下角按键内容为'开始'
- android:imeOptions="actionSearch" //右下角按键为放大镜图片,搜索
- android:imeOptions="actionSend" //右下角按键内容为'发送'
- android:imeOptions="actionNext" //右下角按键内容为'下一步'
- android:imeOptions="actionDone" //右下角按键内容为'完成'
同时,可能EditText添加相应的监听器,捕捉用户点击了软键盘右下角按钮的监听事件,以便进行处理。
- editText.setOnEditorActionListener(new OnEditorActionListener() {
- @Override
- public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
- Toast.makeText(MainActivity.this, "text2", Toast.LENGTH_SHORT).show();
- return false;
- }
- });
在TextView控件中单击链接弹出Activity
http://blog.csdn.net/nokiaguy/article/details/6835916
TextView中做文字按钮实现点击事件
http://www.eoeandroid.com/thread-168290-1-1.html
Android使用TextView实现无下划线超链接
http://orgcent.com/android-textview-no-underline-hyperlink/
文本框实现搜索和清空效果
http://407827531.iteye.com/blog/1114592
为TextView添加阴影
values/styles
- <style name="AudioFileInfoOverlayText">
- <item name="android:paddingLeft">4px</item>
- <item name="android:paddingBottom">4px</item>
- <item name="android:textColor">#ffffffff</item>
- <item name="android:textSize">12sp</item>
- <item name="android:shadowColor">#ff00ff00</item>
- <item name="android:shadowDx">5</item>
- <item name="android:shadowDy">3</item>
- <item name="android:shadowRadius">6</item>
- </style>
- <TextView android:id="@+id/info"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- style="@style/AudioFileInfoOverlayText"
- android:text="aaaa"
- android:gravity="center" />
如何将TextView中的中文设置成粗体?
在xml文件中使用android:textStyle="bold" 可以将英文设置成粗体,但是不能将中文设置成粗体,将中文设置成粗体的方法是:
TextView tv = (TextView)findViewById(R.id.TextView01);
TextPaint tp = tv.getPaint();
tp.setFakeBoldText(true);
其他还有:
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 24f);//设置成24sp
textView.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD));//可能中文加粗无效
textView.setTypeface(Typeface.defaultFromStyle(Typeface.ITALIC));//可能中文无效
textView.setText(Html.fromHtml("<u>"+texts[i]+"</u>"));//下划线
textView.setTypeface(Typeface.MONOSPACE,Typeface.ITALIC);//斜体,中文有效
textView.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG );//中间加横线
textView.getPaint().setFlags(Paint. UNDERLINE_TEXT_FLAG );//底部加横线
android:ellipsize = "end" 省略号在结尾
android:ellipsize = "start" 省略号在开头
android:ellipsize = "middle" 省略号在中间
android:ellipsize = "marquee" 跑马灯
android:singleline = "true"
当然也可以用代码语句:
tv.setEllipsize(TextUtils.TruncateAt.valueOf("END"));
tv.setEllipsize(TextUtils.TruncateAt.valueOf("START"));
tv.setEllipsize(TextUtils.TruncateAt.valueOf("MIDDLE"));
tv.setEllipsize(TextUtils.TruncateAt.valueOf("MARQUEE"));
tv.setSingleLine(true);
ellipsize和lines
- <TextView android:id="@+id/tv"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:textColor="#FF00FF00"
- android:textSize="20px"
- android:lines="4"
- android:ellipsize="end"
- android:text="Automatic Target Mode: using existing emulator running compatible AVD.Application already deployed. No need to reinstall.Application already deployed. No need to reinstall.Application already deployed. No need to reinstall"
- />
不要将ellipsize和lines一起使用,否则会让人疑惑。像上面的代码会显示几行文字呢?
android:lines感觉是用于显示文字的行数,事实上是不确切的。假如文字不满足够的行数呢?android:lines更适合用于设置TextView的高度,像上面的代码指定了TextView的高度可以显示4行文字,如果文字不满4行,则TextView仍旧显示4行的高度!
android:ellipsize用于当文字过长时缩略显示,默认会缩略显示2行!如果和android:singleLine="true"一起使用则显示一行;但不要以为和android:lines="4"或和android:maxLines="4"一起使用会显示4行,当试验过了才知道仍然显示2行!
如何对EditText输入字数做限制?
- private EditText mEditText ;
- mEditText = (EditText) findViewById(R.id.mEditText );
- /** 限制字数 */
- mEditText .addTextChangedListener(new TextWatcher() {
- private CharSequence temp;
- private int selectionStart ;
- private int selectionEnd ;
- @Override
- public void beforeTextChanged(CharSequence s, int start, int count,
- int after) {
- temp = s;
- }
- @Override
- public void onTextChanged(CharSequence s, int start, int before,
- int count) {
- }
- @Override
- public void afterTextChanged(Editable s) {
- selectionStart = mEditText .getSelectionStart();
- selectionEnd = mEditText .getSelectionEnd();
- Log.d(TAG,""+selectionStart);
- if (temp.length() > 8) {