大家好,欢迎来到IT知识分享网。
1.编辑框EditText
2.获得焦点后全选组件内所有文本内容
3.限制EditText输入类型
android:inputType="none" android:inputType="text" android:inputType="textCapCharacters" android:inputType="textCapWords" android:inputType="textCapSentences" android:inputType="textAutoCorrect" android:inputType="textAutoComplete" android:inputType="textMultiLine" android:inputType="textImeMultiLine" android:inputType="textNoSuggestions" android:inputType="textUri" android:inputType="textEmailAddress" android:inputType="textEmailSubject" android:inputType="textShortMessage" android:inputType="textLongMessage" android:inputType="textPersonName" android:inputType="textPostalAddress" android:inputType="textPassword" android:inputType="textVisiblePassword" android:inputType="textWebEditText" android:inputType="textFilter" android:inputType="textPhonetic"
数值类型
android:inputType="number" android:inputType="numberSigned" android:inputType="numberDecimal" android:inputType="phone"//拨号键盘 android:inputType="datetime" android:inputType="date"//日期键盘 android:inputType="time"//时间键盘
4.设置最小行,最多行,单行,多行,自动换行
5.设置文字间隔,设置英文字母大写类型
6.控制EditText四周的间隔距离与内部文字与边框间的距离
我们使用margin相关属性增加组件相对其他控件的距离,比如android:marginTop = “5dp” 使用padding增加组件内文字和组件边框的距离,比如android:paddingTop = “5dp”
7.设置EditText获得焦点,同时弹出小键盘
关于这个EditText获得焦点,弹出小键盘的问题,前不久的项目中纠结了笔者一段时间 需求是:进入Activity后,让EditText获得焦点,同时弹出小键盘供用户输入! 试了很多网上的方法都不可以,不知道是不是因为笔者用的5.1的系统的问题! 下面小结下:
首先是让EditText获得焦点与清除焦点的
edit.requestFocus(); //请求获取焦点 edit.clearFocus(); //清除焦点
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);
第二种:
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(view,InputMethodManager.SHOW_FORCED); imm.hideSoftInputFromWindow(view.getWindowToken(), 0); //强制隐藏键盘
不知道是什么原因,上面这两种方法并没有弹出小键盘,笔者最后使用了:windowSoftInputMode属性解决了弹出小键盘的问题,这里跟大家分享下
android:windowSoftInputMode Activity主窗口与软键盘的交互模式,可以用来避免输入法面板遮挡问题,Android1.5后的一个新特性。 这个属性能影响两件事情: 【一】当有焦点产生时,软键盘是隐藏还是显示 【二】是否减少活动主窗口大小以便腾出空间放软键盘 简单点就是有焦点时的键盘控制以及是否减少Act的窗口大小,用来放小键盘 有下述值可供选择,可设置多个值,用"|"分开 stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置 stateUnchanged:当这个activity出现时,软键盘将一直保持在上一个activity里的状态,无论是隐藏还是显示 stateHidden:用户选择activity时,软键盘总是被隐藏 stateAlwaysHidden:当该Activity主窗口获取焦点时,软键盘也总是被隐藏的 stateVisible:软键盘通常是可见的 stateAlwaysVisible:用户选择activity时,软键盘总是显示的状态 adjustUnspecified:默认设置,通常由系统自行决定是隐藏还是显示 adjustResize:该Activity总是调整屏幕的大小以便留出软键盘的空间 adjustPan:当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分
我们可以在AndroidManifest.xml为需要弹出小键盘的Activity设置这个属性,比如:
然后在EditText对象requestFocus()就可以了~
8.EditText光标位置的控制
9.带表情的EditText的简单实现
相信大家对于或者微信很熟悉吧,我们发送文本的时候可以连同表情一起发送,有两种简单的实现方式:
1.使用SpannableString来实现 2.使用Html类来实现 这里笔者用的是第一种,这里只实现一个简单的效果,大家可以把方法抽取出来,自定义一个EditText; 也可以自己动手写个类似于那样有多个表情选择的输入框!
看下效果图(点击添加表情即可完成表情添加):
代码也很简单:
public class MainActivity extends Activity {
private Button btn_add; private EditText edit_one; @Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn_add = (Button) findViewById(R.id.btn_add); edit_one = (EditText) findViewById(R.id.edit_one); btn_add.setOnClickListener(new OnClickListener() {
@Override public void onClick(View v) {
SpannableString spanStr = new SpannableString("imge"); Drawable drawable = MainActivity.this.getResources().getDrawable(R.drawable.f045); drawable.setBounds(0,0,drawable.getIntrinsicWidth(),drawable.getIntrinsicHeight()); ImageSpan span = new ImageSpan(drawable,ImageSpan.ALIGN_BASELINE); spanStr.setSpan(span,0,4,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); int cursor = edit_one.getSelectionStart(); edit_one.getText().insert(cursor, spanStr); } }); } }
10.带删除按钮的EditText
我们常常在App的输入界面上看到:
实现代码如下:
public class EditTextWithDel extends EditText {
private final static String TAG = "EditTextWithDel"; private Drawable imgInable; private Drawable imgAble; private Context mContext; public EditTextWithDel(Context context) {
super(context); mContext = context; init(); } public EditTextWithDel(Context context, AttributeSet attrs) {
super(context, attrs); mContext = context; init(); } public EditTextWithDel(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr); mContext = context; init(); } private void init() {
imgInable = mContext.getResources().getDrawable(R.drawable.delete_gray); addTextChangedListener(new TextWatcher() {
@Override public void onTextChanged(CharSequence s, int start, int before, int count) {
} @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) {
} @Override public void afterTextChanged(Editable s) {
setDrawable(); } }); setDrawable(); } // 设置删除图片 private void setDrawable() {
if (length() < 1) setCompoundDrawablesWithIntrinsicBounds(null, null, null, null); else setCompoundDrawablesWithIntrinsicBounds(null, null, imgInable, null); } // 处理删除事件 @Override public boolean onTouchEvent(MotionEvent event) {
if (imgInable != null && event.getAction() == MotionEvent.ACTION_UP) {
int eventX = (int) event.getRawX(); int eventY = (int) event.getRawY(); Log.e(TAG, "eventX = " + eventX + "; eventY = " + eventY); Rect rect = new Rect(); getGlobalVisibleRect(rect); rect.left = rect.right - 100; if (rect.contains(eventX, eventY)) setText(""); } return super.onTouchEvent(event); } @Override protected void finalize() throws Throwable {
super.finalize(); } }
11.焦点变更监听器
12.文本变化监听器
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/129352.html