给外国小孩 做 英语题用的网站,it运维职业规划,校园网站设计描述,楼盘销售管理网站开发资源目录
Android EditText 输入框
设置默认提示文本
范例
获得焦点后全选组件内所有文本内容
范例
限制EditText输入类型
android:inputType 值列表
范例
设置最小行#xff0c;最多行#xff0c;单行#xff0c;多行#xff0c;自动换行
范例
设置文字间隔
范例 …目录
Android EditText 输入框
设置默认提示文本
范例
获得焦点后全选组件内所有文本内容
范例
限制EditText输入类型
android:inputType 值列表
范例
设置最小行最多行单行多行自动换行
范例
设置文字间隔
范例
设置英文字母大写类型
范例
控制 EditText 四周的间隔距离与内部文字与边框间的距离
范例
EditText 光标位置的控制
设置 EditText 获得焦点同时弹出小键盘
范例
带表情的 EditText 简单实现
范例
带删除按钮的 EditText
范例
参考文档 Android EditText 输入框
Android 中的 EditText 是一个用于接收用户输入的可编辑文本框。它与 TextView 类似但允许用户在应用程序中输入文本。可以在布局文件XML中声明 EditText也可以在代码中动态创建。
设置默认提示文本
EditText 设置提示文本会用到两个属性
属性说明android:hint这个属性用于设置当 EditText 是空的时候显示的提示文本内容。比如当用户没有输入任何文本时EditText 会显示这个提示文本内容。android:textColorHint这个属性用于设置提示文本的颜色。默认情况下提示文本的颜色通常是灰色但您可以使用这个属性来自定义它的颜色。
范例
1、修改 res/values/colors.xml 添加几个颜色
?xml version1.0 encodingutf-8?
resourcescolor nameblack#FF000000/colorcolor namewhite#FFFFFFFF/colorcolor namepurple#9f44d3/color
/resources
2、修改 res/values/strings.xml 添加几个字符串
?xml version1.0 encodingutf-8 ?
resourcesstring nameapp_name111/stringstring nameemail用 户 名/stringstring namepassword密 码/stringstring namelogin登 陆/string
/resources
3、修改 activity_main.xml 添加两个 EditText 一个提示文本使用默认的颜色另一个使用颜色
?xml version1.0 encodingutf-8 ?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticalEditTextandroid:idid/usernameandroid:hintstring/emailandroid:layout_widthmatch_parentandroid:layout_height44dp /EditTextandroid:idid/emailandroid:hintstring/passwordandroid:textColorHintcolor/purpleandroid:layout_widthmatch_parentandroid:layout_height44dp /
/LinearLayout
运行范例效果如下 获得焦点后全选组件内所有文本内容
android:selectAllOnFocustrue 是一个用于 EditText 的属性当 EditText 获得焦点时它会选中 EditText 中的所有文本内容而不是将光标移动到文本的开始或者结尾。
范例
?xml version1.0 encodingutf-8 ?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticalEditTextandroid:idid/email1android:textstring/emailandroid:selectAllOnFocustrueandroid:layout_widthmatch_parentandroid:layout_heightwrap_content /EditTextandroid:idid/emailandroid:hintstring/passwordandroid:textstring/passwordandroid:textColorHintcolor/purpleandroid:layout_widthmatch_parentandroid:layout_height44dp /
/LinearLayout
限制EditText输入类型
有时我们可能需要对输入的数据进行限制比如输入电话号码的时候你输入了一串字母这 显然是不符合我们预期的而限制输入类型可以通过android:inputType属性来实现 android:inputType是一个非常有用的属性用于限制用户在 EditText 中可以输入的内容类型。通过设置不同的输入类型可以确保用户只能输入符合您预期的数据类型例如文本、数字、日期等。
android:inputType 值列表
1、文本类型
none没有指定输入类型。text默认的文本输入类型。textCapCharacters自动将所有字符转换为大写。textCapWords自动将单词的首字母转换为大写。textCapSentences自动将句子的首字母转换为大写。textAutoCorrect启用自动纠正功能。textAutoComplete启用自动完成功能。textMultiLine允许多行文本输入。textImeMultiLine与 textMultiLine 类似但更适合输入法编辑器IME的多行输入。textNoSuggestions禁用拼写建议。textUri用于输入网址。textEmailAddress用于输入电子邮件地址。textEmailSubject用于输入电子邮件的主题。textShortMessage用于输入短信。textLongMessage用于输入长篇文本消息。textPersonName用于输入人名。textPostalAddress用于输入邮政地址。textPassword用于输入密码显示为密码样式。textVisiblePassword用于输入密码但以可见字符显示。textWebEditText用于输入文本的 WebView 编辑框。textFilter用于过滤文本。
2、数值类型
number用于输入整数。numberSigned用于输入带符号的整数。numberDecimal用于输入十进制数。phone用于输入电话号码显示拨号键盘。datetime用于输入日期和时间。date用于输入日期显示日期键盘。time用于输入时间显示时间键盘。
范例
可以通过将 android:inputType 属性设置为适当的值来限制用户输入电子邮件地址、手机号和密码。
?xml version1.0 encodingutf-8 ?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticalEditTextandroid:idid/editTextEmailandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:hint输入电子邮件android:inputTypetextEmailAddress /EditTextandroid:idid/editTextPhoneandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:hint输入电话号码android:inputTypephone /EditTextandroid:idid/editTextPasswordandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:hint输入密码android:inputTypetextPassword //LinearLayout
在这个示例中第一个 EditText 限制用户只能输入电子邮件地址第二个 EditText 限制用户只能输入手机号第三个 EditText 限制用户只能输入密码并将其显示为密码样式。
如果不想在xml设置还可以在代码中进行相同的设置
EditText editTextEmail findViewById(R.id.editTextEmail);
editTextEmail.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS);EditText editTextPhone findViewById(R.id.editTextPhone);
editTextPhone.setInputType(InputType.TYPE_CLASS_PHONE);EditText editTextPassword findViewById(R.id.editTextPassword);
editTextPassword.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);这样设置后用户将仅能在相应的 EditText 中输入符合您所期望的内容类型从而实现了限制用户输入电子邮件地址、手机号和密码的功能。
设置最小行最多行单行多行自动换行
android:minLines3设置 EditText 的最小行数为 3。这意味着即使没有文本输入EditText 也会显示至少 3 行的高度。
android:maxLines3设置 EditText 的最大行数为 3。如果用户输入的文本超过了这个行数文本将向上滚动但用户仍然可以继续输入。这对于限制用户输入文本长度很有用。
android:singleLinetrue设置 EditText 只允许单行输入而且不会滚动。这意味着用户在输入时文本不会自动换行到新的行而是在同一行上继续输入直到达到 EditText 的边界。这在需要用户输入单行文本的情况下非常有用例如用户名或搜索框。
要注意的是android:singleLine 属性在 API 级别 3Android 1.5已被弃用推荐使用 android:inputType 属性中的 textSingleLine 值来代替
android:inputTypetext|textMultiLine这个属性会允许多行输入但不会自动换行。
如果需要允许用户输入多行文本并且自动换行可以简单地将 android:inputType 设置为 textMultiLine而不设置 android:singleLine 或 android:maxLines。
范例
EditTextandroid:idid/editTextandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:minLines3android:maxLines6android:inputTypetextMultiLineandroid:scrollbarsvertical /在这个示例中EditText 设置了最小行数为 3最大行数为 6并允许多行输入并自动换行。纵向滚动条将在需要时显示。
设置文字间隔
android:textScaleX用于设置文字在水平方向上的缩放比例。比如设置为 1.5 则文字在水平方向上放大 1.5 倍设置为 0.5 则文字在水平方向上缩小为原来的一半。
如果要设置字与字之间的水平间距Android 平台并没有提供直接的属性来实现。不过可以通过其他方式来实现比如使用 android:letterSpacing 属性来控制水平间距
范例
?xml version1.0 encodingutf-8 ?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticalTextViewandroid:idid/textView1android:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textHello World!android:textSize24spandroid:textScaleX1.5android:letterSpacing0.1 /TextViewandroid:idid/textViewandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:textHello World!android:textSize24spandroid:textScaleX1.5 //LinearLayout
设置英文字母大写类型
android:capitalize 属性用于设置英文字母的大写类型。它有以下几个可能的值
none默认值不做任何自动大写转换。sentences仅将每个句子的首字母大写。words将每个单词的首字母大写单词由空格分隔。characters将所有英文字母都转换为大写。
范例
可以在 XML 布局文件中为 EditText 设置这个属性如下所示
?xml version1.0 encodingutf-8 ?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticalEditTextandroid:idid/editTextandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:hint输入文本android:capitalizecharacters /
/LinearLayout
在这个示例中android:capitalizecharacters 将 EditText 中输入的英文字母全部转换为大写。
控制 EditText 四周的间隔距离与内部文字与边框间的距离
android:layout_marginTop 和 android:paddingTop 等属性可以用于控制 EditText 组件与其周围的间距距离以及内部文字与边框之间的距离。
android:layout_marginTop、android:layout_marginBottom、android:layout_marginLeft 和 android:layout_marginRight 属性用于设置组件与其周围的上、下、左、右间距距离。 android:paddingTop、android:paddingBottom、android:paddingLeft 和 android:paddingRight 属性用于设置组件内部文字与边框之间的上、下、左、右间距距离。
范例
?xml version1.0 encodingutf-8 ?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticalEditTextandroid:idid/editTextandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:hintEnter textandroid:layout_marginTop10dpandroid:layout_marginBottom10dpandroid:paddingTop5dpandroid:paddingBottom5dpandroid:paddingLeft10dpandroid:paddingRight10dp //LinearLayout
在这个示例中android:layout_marginTop10dp 和 android:layout_marginBottom10dp 设置了 EditText 与其上方和下方的外边距为 10dp。而 android:paddingTop5dp、android:paddingBottom5dp、android:paddingLeft10dp 和 android:paddingRight10dp 设置了 EditText 内容与边框的内边距。
EditText 光标位置的控制
可以使用 EditText 的 setSelection() 方法来控制光标的位置和选中文本。以下是这些方法的说明
setSelection(int index)将光标移动到指定位置 index 处。setSelection(int start, int stop)选中从 start 到 stop 位置之间的文本。setSelectAllOnFocus(true)当 EditText 获得焦点时选中全部文本。setCursorVisible(false)设置光标是否可见。如果设置为 false光标将不会显示。setSelectionStart() 和 getSelectionEnd()用于获取当前光标的前后位置。
设置 EditText 获得焦点同时弹出小键盘
有时候我们需要在进入某个 Activity 后让 文本框 立即获得焦点并且弹出键盘对 EditText 做一些简单的改变就能实现这样的功能
1、让 EditText 获得焦点与清除焦点
在 Android 中可以通过 requestFocus() 方法来请求让 EditText 获得焦点并且通过 clearFocus() 方法来清除 EditText 的焦点。
以下是示例代码
EditText editText findViewById(R.id.editText);// 请求让 EditText 获得焦点
editText.requestFocus();// 清除 EditText 的焦点
editText.clearFocus();在这个示例中首先我们调用 requestFocus() 方法请求 EditText 获得焦点然后立即调用 clearFocus() 方法来清除焦点。这样做的目的可能是为了在某些情况下例如在界面加载完毕后让 EditText 获得焦点以显示光标但不希望键盘立即弹出所以我们立即清除焦点。
2、获得焦点后弹出小键盘
在 Android 中根据不同的系统版本
a、低版本的系统直接 requestFocus() 就会自动弹出键盘
b、稍微高一点的版本可能需要设置 android:windowSoftInputMode 属性来确保获得焦点的 EditText 弹出小键盘。
这个属性可以用来控制 Activity 主窗口与软键盘的交互模式以解决输入法面板遮挡问题。
这个属性影响两个方面
当有焦点产生时软键盘是隐藏还是显示。是否减少活动主窗口大小以便腾出空间放软键盘。
下面是该属性的一些值及其说明可设置多个值用|分开
stateUnspecified软键盘的状态并没有指定系统将选择一个合适的状态或依赖于主题的设置。stateUnchanged当这个 Activity 出现时软键盘将一直保持在上一个 Activity 里的状态无论是隐藏还是显示。stateHidden用户选择 Activity 时软键盘总是被隐藏。stateAlwaysHidden当该 Activity 主窗口获取焦点时软键盘也总是被隐藏。stateVisible软键盘通常是可见的。stateAlwaysVisible用户选择 Activity 时软键盘总是显示的状态。adjustUnspecified默认设置通常由系统自行决定是隐藏还是显示。adjustResize该 Activity 总是调整屏幕的大小以便留出软键盘的空间。adjustPan当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖用户能总是看到输入内容的部分。
在 AndroidManifest.xml 中为需要弹出小键盘的 Activity 设置 android:windowSoftInputModestateVisible 属性
activity android:name.MainActivityandroid:windowSoftInputModestateVisible
/activity这个属性确保了当该 Activity 主窗口获取焦点时软键盘总是显示的状态。
然后在代码中调用 EditText 的 requestFocus() 方法就可以让它获得焦点并且弹出小键盘
EditText editText findViewById(R.id.editText);
editText.requestFocus();这样当进入该 Activity 时EditText 将会立即获得焦点并且小键盘会弹出。
范例
?xml version1.0 encodingutf-8 ?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticalEditTextandroid:idid/emailandroid:hintstring/emailandroid:inputTypetextEmailAddressandroid:layout_widthmatch_parentandroid:layout_heightwrap_content //LinearLayout
package com.example.myapplication;import androidx.appcompat.app.AppCompatActivity;import android.content.DialogInterface;
import android.graphics.Color;
import android.graphics.Typeface;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.Html;
import android.text.InputType;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextPaint;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.text.style.ForegroundColorSpan;
import android.text.style.ImageSpan;
import android.text.style.StrikethroughSpan;
import android.text.style.StyleSpan;
import android.text.style.URLSpan;
import android.text.style.UnderlineSpan;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ViewAnimator;import java.lang.reflect.Field;public class MainActivity extends AppCompatActivity {Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);EditText editText findViewById(R.id.email);// 请求让 EditText 获得焦点editText.requestFocus();}
}
带表情的 EditText 简单实现
对于 Android 中 EditText 输入框中显示表情的实现可以使用 SpannableString 或者 Html 类来实现。
范例
使用 SpannableString写
?xml version1.0 encodingutf-8 ?
LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroid:orientationverticalButtonandroid:layout_widthwrap_contentandroid:layout_heightwrap_contentandroid:idid/btn_addandroid:text添加表情/EditTextandroid:idid/edit_oneandroid:hint输入框android:inputTypetextEmailAddressandroid:layout_widthmatch_parentandroid:layout_heightwrap_content //LinearLayout
package com.example.myapplication;import androidx.appcompat.app.AppCompatActivity;import android.app.Activity;
import android.content.DialogInterface;
import android.graphics.Color;
import android.graphics.Typeface;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.Html;
import android.text.InputType;
import android.text.Spannable;
import android.text.SpannableString;
import android.text.SpannableStringBuilder;
import android.text.Spanned;
import android.text.TextPaint;
import android.text.method.LinkMovementMethod;
import android.text.style.ClickableSpan;
import android.text.style.ForegroundColorSpan;
import android.text.style.ImageSpan;
import android.text.style.StrikethroughSpan;
import android.text.style.StyleSpan;
import android.text.style.URLSpan;
import android.text.style.UnderlineSpan;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.ViewAnimator;import java.lang.reflect.Field;public class MainActivity extends Activity {private Button btn_add;private EditText edit_one;Overrideprotected 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 View.OnClickListener() {Overridepublic void onClick(View v) {SpannableString spanStr new SpannableString(imge);Drawable drawable MainActivity.this.getResources().getDrawable(R.drawable.baseline_favorite_24);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);}});}
}
带删除按钮的 EditText
范例
1、在com.example.myapplication目录下新建个ClearableEditText类
package com.example.myapplication;import android.content.Context;
import android.graphics.drawable.Drawable;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.AttributeSet;import androidx.appcompat.widget.AppCompatEditText;
import androidx.core.content.ContextCompat;public class ClearableEditText extends AppCompatEditText {private Drawable clearButtonDrawable;public ClearableEditText(Context context) {super(context);init(context);}public ClearableEditText(Context context, AttributeSet attrs) {super(context, attrs);init(context);}public ClearableEditText(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);init(context);}private void init(Context context) {// 初始化删除按钮图标clearButtonDrawable ContextCompat.getDrawable(context, android.R.drawable.ic_delete);if (clearButtonDrawable ! null) {clearButtonDrawable.setBounds(0, 0, clearButtonDrawable.getIntrinsicWidth(), clearButtonDrawable.getIntrinsicHeight());}updateClearButtonVisibility();// 监听文本变化事件addTextChangedListener(new TextWatcher() {Overridepublic void beforeTextChanged(CharSequence s, int start, int count, int after) {}Overridepublic void onTextChanged(CharSequence s, int start, int before, int count) {updateClearButtonVisibility();}Overridepublic void afterTextChanged(Editable s) {}});}// 更新删除按钮的可见性private void updateClearButtonVisibility() {setCompoundDrawables(null, null, getText().length() 0 ? clearButtonDrawable : null, null);}// 处理删除按钮的点击事件Overridepublic boolean performClick() {if (clearButtonDrawable ! null getCompoundDrawables()[2] clearButtonDrawable) {setText();return true;}return super.performClick();}
}2、activity_main.xml
?xml version1.0 encodingutf-8 ?
RelativeLayout xmlns:androidhttp://schemas.android.com/apk/res/androidxmlns:toolshttp://schemas.android.com/toolsandroid:layout_widthmatch_parentandroid:layout_heightmatch_parenttools:context.MainActivitycom.example.myapplication.ClearableEditTextandroid:idid/editTextandroid:layout_widthmatch_parentandroid:layout_heightwrap_contentandroid:layout_marginTop10dpandroid:hint输入文本android:paddingEnd40dptools:ignoreMissingClass //RelativeLayout参考文档
Android 官方文档 EditView